home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1992-04-05 | 17.0 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, Sun Apr 5 17:07:57 1992, modified Sun Apr 5 17:07:57 1992, creator 'MPS ', type ASCII, 16762 bytes "getopt.c" , at 0x41fa 428 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 67 65 74 6f 70 74 | 2e 63 00 00 00 00 00 00 |..getopt|.c......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 41 7a 00 | 00 01 ac a6 05 1c ad a6 |.....Az.|........|
|00000060| 05 1c ad 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 2e 12 00 00 |........|........|
|00000080| 2f 2a 20 47 65 74 6f 70 | 74 20 66 6f 72 20 47 4e |/* Getop|t for GN|
|00000090| 55 2e 0d 20 20 20 43 6f | 70 79 72 69 67 68 74 20 |U.. Co|pyright |
|000000a0| 28 43 29 20 31 39 38 37 | 2c 20 31 39 38 39 2c 20 |(C) 1987|, 1989, |
|000000b0| 31 39 39 30 20 46 72 65 | 65 20 53 6f 66 74 77 61 |1990 Fre|e Softwa|
|000000c0| 72 65 20 46 6f 75 6e 64 | 61 74 69 6f 6e 2c 20 49 |re Found|ation, I|
|000000d0| 6e 63 2e 0d 0d 20 20 20 | 54 68 69 73 20 70 72 6f |nc... |This pro|
|000000e0| 67 72 61 6d 20 69 73 20 | 66 72 65 65 20 73 6f 66 |gram is |free sof|
|000000f0| 74 77 61 72 65 3b 20 79 | 6f 75 20 63 61 6e 20 72 |tware; y|ou can r|
|00000100| 65 64 69 73 74 72 69 62 | 75 74 65 20 69 74 20 61 |edistrib|ute it a|
|00000110| 6e 64 2f 6f 72 20 6d 6f | 64 69 66 79 0d 20 20 20 |nd/or mo|dify. |
|00000120| 69 74 20 75 6e 64 65 72 | 20 74 68 65 20 74 65 72 |it under| the ter|
|00000130| 6d 73 20 6f 66 20 74 68 | 65 20 47 4e 55 20 47 65 |ms of th|e GNU Ge|
|00000140| 6e 65 72 61 6c 20 50 75 | 62 6c 69 63 20 4c 69 63 |neral Pu|blic Lic|
|00000150| 65 6e 73 65 20 61 73 20 | 70 75 62 6c 69 73 68 65 |ense as |publishe|
|00000160| 64 20 62 79 0d 20 20 20 | 74 68 65 20 46 72 65 65 |d by. |the Free|
|00000170| 20 53 6f 66 74 77 61 72 | 65 20 46 6f 75 6e 64 61 | Softwar|e Founda|
|00000180| 74 69 6f 6e 3b 20 65 69 | 74 68 65 72 20 76 65 72 |tion; ei|ther ver|
|00000190| 73 69 6f 6e 20 31 2c 20 | 6f 72 20 28 61 74 20 79 |sion 1, |or (at y|
|000001a0| 6f 75 72 20 6f 70 74 69 | 6f 6e 29 0d 20 20 20 61 |our opti|on). a|
|000001b0| 6e 79 20 6c 61 74 65 72 | 20 76 65 72 73 69 6f 6e |ny later| version|
|000001c0| 2e 0d 0d 20 20 20 54 68 | 69 73 20 70 72 6f 67 72 |... Th|is progr|
|000001d0| 61 6d 20 69 73 20 64 69 | 73 74 72 69 62 75 74 65 |am is di|stribute|
|000001e0| 64 20 69 6e 20 74 68 65 | 20 68 6f 70 65 20 74 68 |d in the| hope th|
|000001f0| 61 74 20 69 74 20 77 69 | 6c 6c 20 62 65 20 75 73 |at it wi|ll be us|
|00000200| 65 66 75 6c 2c 0d 20 20 | 20 62 75 74 20 57 49 54 |eful,. | but WIT|
|00000210| 48 4f 55 54 20 41 4e 59 | 20 57 41 52 52 41 4e 54 |HOUT ANY| WARRANT|
|00000220| 59 3b 20 77 69 74 68 6f | 75 74 20 65 76 65 6e 20 |Y; witho|ut even |
|00000230| 74 68 65 20 69 6d 70 6c | 69 65 64 20 77 61 72 72 |the impl|ied warr|
|00000240| 61 6e 74 79 20 6f 66 0d | 20 20 20 4d 45 52 43 48 |anty of.| MERCH|
|00000250| 41 4e 54 41 42 49 4c 49 | 54 59 20 6f 72 20 46 49 |ANTABILI|TY or FI|
|00000260| 54 4e 45 53 53 20 46 4f | 52 20 41 20 50 41 52 54 |TNESS FO|R A PART|
|00000270| 49 43 55 4c 41 52 20 50 | 55 52 50 4f 53 45 2e 20 |ICULAR P|URPOSE. |
|00000280| 20 53 65 65 20 74 68 65 | 0d 20 20 20 47 4e 55 20 | See the|. GNU |
|00000290| 47 65 6e 65 72 61 6c 20 | 50 75 62 6c 69 63 20 4c |General |Public L|
|000002a0| 69 63 65 6e 73 65 20 66 | 6f 72 20 6d 6f 72 65 20 |icense f|or more |
|000002b0| 64 65 74 61 69 6c 73 2e | 0d 0d 20 20 20 59 6f 75 |details.|.. You|
|000002c0| 20 73 68 6f 75 6c 64 20 | 68 61 76 65 20 72 65 63 | should |have rec|
|000002d0| 65 69 76 65 64 20 61 20 | 63 6f 70 79 20 6f 66 20 |eived a |copy of |
|000002e0| 74 68 65 20 47 4e 55 20 | 47 65 6e 65 72 61 6c 20 |the GNU |General |
|000002f0| 50 75 62 6c 69 63 20 4c | 69 63 65 6e 73 65 0d 20 |Public L|icense. |
|00000300| 20 20 61 6c 6f 6e 67 20 | 77 69 74 68 20 74 68 69 | along |with thi|
|00000310| 73 20 70 72 6f 67 72 61 | 6d 3b 20 69 66 20 6e 6f |s progra|m; if no|
|00000320| 74 2c 20 77 72 69 74 65 | 20 74 6f 20 74 68 65 20 |t, write| to the |
|00000330| 46 72 65 65 20 53 6f 66 | 74 77 61 72 65 0d 20 20 |Free Sof|tware. |
|00000340| 20 46 6f 75 6e 64 61 74 | 69 6f 6e 2c 20 49 6e 63 | Foundat|ion, Inc|
|00000350| 2e 2c 20 36 37 35 20 4d | 61 73 73 20 41 76 65 2c |., 675 M|ass Ave,|
|00000360| 20 43 61 6d 62 72 69 64 | 67 65 2c 20 4d 41 20 30 | Cambrid|ge, MA 0|
|00000370| 32 31 33 39 2c 20 55 53 | 41 2e 20 20 2a 2f 0d 0c |2139, US|A. */..|
|00000380| 0d 23 69 66 64 65 66 20 | 5f 5f 53 54 44 43 5f 5f |.#ifdef |__STDC__|
|00000390| 0d 23 64 65 66 69 6e 65 | 20 43 4f 4e 53 54 20 63 |.#define| CONST c|
|000003a0| 6f 6e 73 74 0d 23 65 6c | 73 65 0d 23 64 65 66 69 |onst.#el|se.#defi|
|000003b0| 6e 65 20 43 4f 4e 53 54 | 0d 23 65 6e 64 69 66 0d |ne CONST|.#endif.|
|000003c0| 0d 2f 2a 20 54 68 69 73 | 20 76 65 72 73 69 6f 6e |./* This| version|
|000003d0| 20 6f 66 20 60 67 65 74 | 6f 70 74 27 20 61 70 70 | of `get|opt' app|
|000003e0| 65 61 72 73 20 74 6f 20 | 74 68 65 20 63 61 6c 6c |ears to |the call|
|000003f0| 65 72 20 6c 69 6b 65 20 | 73 74 61 6e 64 61 72 64 |er like |standard|
|00000400| 20 55 6e 69 78 20 60 67 | 65 74 6f 70 74 27 0d 20 | Unix `g|etopt'. |
|00000410| 20 20 62 75 74 20 69 74 | 20 62 65 68 61 76 65 73 | but it| behaves|
|00000420| 20 64 69 66 66 65 72 65 | 6e 74 6c 79 20 66 6f 72 | differe|ntly for|
|00000430| 20 74 68 65 20 75 73 65 | 72 2c 20 73 69 6e 63 65 | the use|r, since|
|00000440| 20 69 74 20 61 6c 6c 6f | 77 73 20 74 68 65 20 75 | it allo|ws the u|
|00000450| 73 65 72 0d 20 20 20 74 | 6f 20 69 6e 74 65 72 73 |ser. t|o inters|
|00000460| 70 65 72 73 65 20 74 68 | 65 20 6f 70 74 69 6f 6e |perse th|e option|
|00000470| 73 20 77 69 74 68 20 74 | 68 65 20 6f 74 68 65 72 |s with t|he other|
|00000480| 20 61 72 67 75 6d 65 6e | 74 73 2e 0d 0d 20 20 20 | argumen|ts... |
|00000490| 41 73 20 60 67 65 74 6f | 70 74 27 20 77 6f 72 6b |As `geto|pt' work|
|000004a0| 73 2c 20 69 74 20 70 65 | 72 6d 75 74 65 73 20 74 |s, it pe|rmutes t|
|000004b0| 68 65 20 65 6c 65 6d 65 | 6e 74 73 20 6f 66 20 60 |he eleme|nts of `|
|000004c0| 61 72 67 76 27 20 73 6f | 20 74 68 61 74 2c 0d 20 |argv' so| that,. |
|000004d0| 20 20 77 68 65 6e 20 69 | 74 20 69 73 20 64 6f 6e | when i|t is don|
|000004e0| 65 2c 20 61 6c 6c 20 74 | 68 65 20 6f 70 74 69 6f |e, all t|he optio|
|000004f0| 6e 73 20 70 72 65 63 65 | 64 65 20 65 76 65 72 79 |ns prece|de every|
|00000500| 74 68 69 6e 67 20 65 6c | 73 65 2e 20 20 54 68 75 |thing el|se. Thu|
|00000510| 73 0d 20 20 20 61 6c 6c | 20 61 70 70 6c 69 63 61 |s. all| applica|
|00000520| 74 69 6f 6e 20 70 72 6f | 67 72 61 6d 73 20 61 72 |tion pro|grams ar|
|00000530| 65 20 65 78 74 65 6e 64 | 65 64 20 74 6f 20 68 61 |e extend|ed to ha|
|00000540| 6e 64 6c 65 20 66 6c 65 | 78 69 62 6c 65 20 61 72 |ndle fle|xible ar|
|00000550| 67 75 6d 65 6e 74 20 6f | 72 64 65 72 2e 0d 0d 20 |gument o|rder... |
|00000560| 20 20 53 65 74 74 69 6e | 67 20 74 68 65 20 65 6e | Settin|g the en|
|00000570| 76 69 72 6f 6e 6d 65 6e | 74 20 76 61 72 69 61 62 |vironmen|t variab|
|00000580| 6c 65 20 5f 50 4f 53 49 | 58 5f 4f 50 54 49 4f 4e |le _POSI|X_OPTION|
|00000590| 5f 4f 52 44 45 52 20 64 | 69 73 61 62 6c 65 73 20 |_ORDER d|isables |
|000005a0| 70 65 72 6d 75 74 61 74 | 69 6f 6e 2e 0d 20 20 20 |permutat|ion.. |
|000005b0| 54 68 65 6e 20 74 68 65 | 20 62 65 68 61 76 69 6f |Then the| behavio|
|000005c0| 72 20 69 73 20 63 6f 6d | 70 6c 65 74 65 6c 79 20 |r is com|pletely |
|000005d0| 73 74 61 6e 64 61 72 64 | 2e 0d 0d 20 20 20 47 4e |standard|... GN|
|000005e0| 55 20 61 70 70 6c 69 63 | 61 74 69 6f 6e 20 70 72 |U applic|ation pr|
|000005f0| 6f 67 72 61 6d 73 20 63 | 61 6e 20 75 73 65 20 61 |ograms c|an use a|
|00000600| 20 74 68 69 72 64 20 61 | 6c 74 65 72 6e 61 74 69 | third a|lternati|
|00000610| 76 65 20 6d 6f 64 65 20 | 69 6e 20 77 68 69 63 68 |ve mode |in which|
|00000620| 0d 20 20 20 74 68 65 79 | 20 63 61 6e 20 64 69 73 |. they| can dis|
|00000630| 74 69 6e 67 75 69 73 68 | 20 74 68 65 20 72 65 6c |tinguish| the rel|
|00000640| 61 74 69 76 65 20 6f 72 | 64 65 72 20 6f 66 20 6f |ative or|der of o|
|00000650| 70 74 69 6f 6e 73 20 61 | 6e 64 20 6f 74 68 65 72 |ptions a|nd other|
|00000660| 20 61 72 67 75 6d 65 6e | 74 73 2e 20 20 2a 2f 0d | argumen|ts. */.|
|00000670| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |.#includ|e <stdio|
|00000680| 2e 68 3e 0d 0d 2f 2a 20 | 49 66 20 63 6f 6d 70 69 |.h>../* |If compi|
|00000690| 6c 65 64 20 77 69 74 68 | 20 47 4e 55 20 43 2c 20 |led with| GNU C, |
|000006a0| 75 73 65 20 74 68 65 20 | 62 75 69 6c 74 2d 69 6e |use the |built-in|
|000006b0| 20 61 6c 6c 6f 63 61 20 | 2a 2f 0d 23 69 66 64 65 | alloca |*/.#ifde|
|000006c0| 66 20 5f 5f 47 4e 55 43 | 5f 5f 0d 23 64 65 66 69 |f __GNUC|__.#defi|
|000006d0| 6e 65 20 61 6c 6c 6f 63 | 61 20 5f 5f 62 75 69 6c |ne alloc|a __buil|
|000006e0| 74 69 6e 5f 61 6c 6c 6f | 63 61 0d 23 65 6c 73 65 |tin_allo|ca.#else|
|000006f0| 20 2f 2a 20 6e 6f 74 20 | 5f 5f 47 4e 55 43 5f 5f | /* not |__GNUC__|
|00000700| 20 2a 2f 0d 23 69 66 64 | 65 66 20 73 70 61 72 63 | */.#ifd|ef sparc|
|00000710| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 61 6c 6c 6f 63 |.#includ|e <alloc|
|00000720| 61 2e 68 3e 0d 23 65 6c | 73 65 0d 63 68 61 72 20 |a.h>.#el|se.char |
|00000730| 2a 61 6c 6c 6f 63 61 20 | 28 29 3b 0d 23 65 6e 64 |*alloca |();.#end|
|00000740| 69 66 0d 23 65 6e 64 69 | 66 20 2f 2a 20 6e 6f 74 |if.#endi|f /* not|
|00000750| 20 5f 5f 47 4e 55 43 5f | 5f 20 2a 2f 0d 0d 23 69 | __GNUC_|_ */..#i|
|00000760| 66 20 64 65 66 69 6e 65 | 64 28 53 54 44 43 5f 48 |f define|d(STDC_H|
|00000770| 45 41 44 45 52 53 29 20 | 7c 7c 20 64 65 66 69 6e |EADERS) ||| defin|
|00000780| 65 64 28 5f 5f 47 4e 55 | 5f 4c 49 42 52 41 52 59 |ed(__GNU|_LIBRARY|
|00000790| 5f 5f 29 20 7c 7c 20 64 | 65 66 69 6e 65 64 28 6d |__) || d|efined(m|
|000007a0| 61 63 69 6e 74 6f 73 68 | 29 0d 23 69 6e 63 6c 75 |acintosh|).#inclu|
|000007b0| 64 65 20 3c 73 74 64 6c | 69 62 2e 68 3e 0d 23 69 |de <stdl|ib.h>.#i|
|000007c0| 6e 63 6c 75 64 65 20 3c | 73 74 72 69 6e 67 2e 68 |nclude <|string.h|
|000007d0| 3e 0d 23 64 65 66 69 6e | 65 20 62 63 6f 70 79 28 |>.#defin|e bcopy(|
|000007e0| 73 2c 20 64 2c 20 6e 29 | 20 6d 65 6d 63 70 79 20 |s, d, n)| memcpy |
|000007f0| 28 28 64 29 2c 20 28 73 | 29 2c 20 28 6e 29 29 0d |((d), (s|), (n)).|
|00000800| 23 64 65 66 69 6e 65 20 | 69 6e 64 65 78 20 73 74 |#define |index st|
|00000810| 72 63 68 72 0d 23 65 6c | 73 65 0d 0d 23 69 66 64 |rchr.#el|se..#ifd|
|00000820| 65 66 20 55 53 47 0d 23 | 69 6e 63 6c 75 64 65 20 |ef USG.#|include |
|00000830| 3c 73 74 72 69 6e 67 2e | 68 3e 0d 23 64 65 66 69 |<string.|h>.#defi|
|00000840| 6e 65 20 62 63 6f 70 79 | 28 73 2c 20 64 2c 20 6e |ne bcopy|(s, d, n|
|00000850| 29 20 6d 65 6d 63 70 79 | 20 28 28 64 29 2c 20 28 |) memcpy| ((d), (|
|00000860| 73 29 2c 20 28 6e 29 29 | 0d 23 64 65 66 69 6e 65 |s), (n))|.#define|
|00000870| 20 69 6e 64 65 78 20 73 | 74 72 63 68 72 0d 23 65 | index s|trchr.#e|
|00000880| 6c 73 65 0d 23 69 66 64 | 65 66 20 56 4d 53 0d 23 |lse.#ifd|ef VMS.#|
|00000890| 69 6e 63 6c 75 64 65 20 | 3c 73 74 72 69 6e 67 2e |include |<string.|
|000008a0| 68 3e 0d 23 65 6c 73 65 | 0d 23 69 6e 63 6c 75 64 |h>.#else|.#includ|
|000008b0| 65 20 3c 73 74 72 69 6e | 67 73 2e 68 3e 0d 23 65 |e <strin|gs.h>.#e|
|000008c0| 6e 64 69 66 0d 76 6f 69 | 64 20 62 63 6f 70 79 20 |ndif.voi|d bcopy |
|000008d0| 28 29 3b 0d 23 65 6e 64 | 69 66 0d 0d 63 68 61 72 |();.#end|if..char|
|000008e0| 20 2a 67 65 74 65 6e 76 | 20 28 29 3b 0d 63 68 61 | *getenv| ();.cha|
|000008f0| 72 20 2a 6d 61 6c 6c 6f | 63 20 28 29 3b 0d 23 65 |r *mallo|c ();.#e|
|00000900| 6e 64 69 66 0d 0d 2f 2a | 20 46 6f 72 20 63 6f 6d |ndif../*| For com|
|00000910| 6d 75 6e 69 63 61 74 69 | 6f 6e 20 66 72 6f 6d 20 |municati|on from |
|00000920| 60 67 65 74 6f 70 74 27 | 20 74 6f 20 74 68 65 20 |`getopt'| to the |
|00000930| 63 61 6c 6c 65 72 2e 0d | 20 20 20 57 68 65 6e 20 |caller..| When |
|00000940| 60 67 65 74 6f 70 74 27 | 20 66 69 6e 64 73 20 61 |`getopt'| finds a|
|00000950| 6e 20 6f 70 74 69 6f 6e | 20 74 68 61 74 20 74 61 |n option| that ta|
|00000960| 6b 65 73 20 61 6e 20 61 | 72 67 75 6d 65 6e 74 2c |kes an a|rgument,|
|00000970| 0d 20 20 20 74 68 65 20 | 61 72 67 75 6d 65 6e 74 |. the |argument|
|00000980| 20 76 61 6c 75 65 20 69 | 73 20 72 65 74 75 72 6e | value i|s return|
|00000990| 65 64 20 68 65 72 65 2e | 0d 20 20 20 41 6c 73 6f |ed here.|. Also|
|000009a0| 2c 20 77 68 65 6e 20 60 | 6f 72 64 65 72 69 6e 67 |, when `|ordering|
|000009b0| 27 20 69 73 20 52 45 54 | 55 52 4e 5f 49 4e 5f 4f |' is RET|URN_IN_O|
|000009c0| 52 44 45 52 2c 0d 20 20 | 20 65 61 63 68 20 6e 6f |RDER,. | each no|
|000009d0| 6e 2d 6f 70 74 69 6f 6e | 20 41 52 47 56 2d 65 6c |n-option| ARGV-el|
|000009e0| 65 6d 65 6e 74 20 69 73 | 20 72 65 74 75 72 6e 65 |ement is| returne|
|000009f0| 64 20 68 65 72 65 2e 20 | 20 2a 2f 0d 0d 63 68 61 |d here. | */..cha|
|00000a00| 72 20 2a 6f 70 74 61 72 | 67 20 3d 20 30 3b 0d 0d |r *optar|g = 0;..|
|00000a10| 2f 2a 20 49 6e 64 65 78 | 20 69 6e 20 41 52 47 56 |/* Index| in ARGV|
|00000a20| 20 6f 66 20 74 68 65 20 | 6e 65 78 74 20 65 6c 65 | of the |next ele|
|00000a30| 6d 65 6e 74 20 74 6f 20 | 62 65 20 73 63 61 6e 6e |ment to |be scann|
|00000a40| 65 64 2e 0d 20 20 20 54 | 68 69 73 20 69 73 20 75 |ed.. T|his is u|
|00000a50| 73 65 64 20 66 6f 72 20 | 63 6f 6d 6d 75 6e 69 63 |sed for |communic|
|00000a60| 61 74 69 6f 6e 20 74 6f | 20 61 6e 64 20 66 72 6f |ation to| and fro|
|00000a70| 6d 20 74 68 65 20 63 61 | 6c 6c 65 72 0d 20 20 20 |m the ca|ller. |
|00000a80| 61 6e 64 20 66 6f 72 20 | 63 6f 6d 6d 75 6e 69 63 |and for |communic|
|00000a90| 61 74 69 6f 6e 20 62 65 | 74 77 65 65 6e 20 73 75 |ation be|tween su|
|00000aa0| 63 63 65 73 73 69 76 65 | 20 63 61 6c 6c 73 20 74 |ccessive| calls t|
|00000ab0| 6f 20 60 67 65 74 6f 70 | 74 27 2e 0d 0d 20 20 20 |o `getop|t'... |
|00000ac0| 4f 6e 20 65 6e 74 72 79 | 20 74 6f 20 60 67 65 74 |On entry| to `get|
|00000ad0| 6f 70 74 27 2c 20 7a 65 | 72 6f 20 6d 65 61 6e 73 |opt', ze|ro means|
|00000ae0| 20 74 68 69 73 20 69 73 | 20 74 68 65 20 66 69 72 | this is| the fir|
|00000af0| 73 74 20 63 61 6c 6c 3b | 20 69 6e 69 74 69 61 6c |st call;| initial|
|00000b00| 69 7a 65 2e 0d 0d 20 20 | 20 57 68 65 6e 20 60 67 |ize... | When `g|
|00000b10| 65 74 6f 70 74 27 20 72 | 65 74 75 72 6e 73 20 45 |etopt' r|eturns E|
|00000b20| 4f 46 2c 20 74 68 69 73 | 20 69 73 20 74 68 65 20 |OF, this| is the |
|00000b30| 69 6e 64 65 78 20 6f 66 | 20 74 68 65 20 66 69 72 |index of| the fir|
|00000b40| 73 74 20 6f 66 20 74 68 | 65 0d 20 20 20 6e 6f 6e |st of th|e. non|
|00000b50| 2d 6f 70 74 69 6f 6e 20 | 65 6c 65 6d 65 6e 74 73 |-option |elements|
|00000b60| 20 74 68 61 74 20 74 68 | 65 20 63 61 6c 6c 65 72 | that th|e caller|
|00000b70| 20 73 68 6f 75 6c 64 20 | 69 74 73 65 6c 66 20 73 | should |itself s|
|00000b80| 63 61 6e 2e 0d 0d 20 20 | 20 4f 74 68 65 72 77 69 |can... | Otherwi|
|00000b90| 73 65 2c 20 60 6f 70 74 | 69 6e 64 27 20 63 6f 6d |se, `opt|ind' com|
|00000ba0| 6d 75 6e 69 63 61 74 65 | 73 20 66 72 6f 6d 20 6f |municate|s from o|
|00000bb0| 6e 65 20 63 61 6c 6c 20 | 74 6f 20 74 68 65 20 6e |ne call |to the n|
|00000bc0| 65 78 74 0d 20 20 20 68 | 6f 77 20 6d 75 63 68 20 |ext. h|ow much |
|00000bd0| 6f 66 20 41 52 47 56 20 | 68 61 73 20 62 65 65 6e |of ARGV |has been|
|00000be0| 20 73 63 61 6e 6e 65 64 | 20 73 6f 20 66 61 72 2e | scanned| so far.|
|00000bf0| 20 20 2a 2f 0d 0d 69 6e | 74 20 6f 70 74 69 6e 64 | */..in|t optind|
|00000c00| 20 3d 20 30 3b 0d 0d 2f | 2a 20 54 68 65 20 6e 65 | = 0;../|* The ne|
|00000c10| 78 74 20 63 68 61 72 20 | 74 6f 20 62 65 20 73 63 |xt char |to be sc|
|00000c20| 61 6e 6e 65 64 20 69 6e | 20 74 68 65 20 6f 70 74 |anned in| the opt|
|00000c30| 69 6f 6e 2d 65 6c 65 6d | 65 6e 74 0d 20 20 20 69 |ion-elem|ent. i|
|00000c40| 6e 20 77 68 69 63 68 20 | 74 68 65 20 6c 61 73 74 |n which |the last|
|00000c50| 20 6f 70 74 69 6f 6e 20 | 63 68 61 72 61 63 74 65 | option |characte|
|00000c60| 72 20 77 65 20 72 65 74 | 75 72 6e 65 64 20 77 61 |r we ret|urned wa|
|00000c70| 73 20 66 6f 75 6e 64 2e | 0d 20 20 20 54 68 69 73 |s found.|. This|
|00000c80| 20 61 6c 6c 6f 77 73 20 | 75 73 20 74 6f 20 70 69 | allows |us to pi|
|00000c90| 63 6b 20 75 70 20 74 68 | 65 20 73 63 61 6e 20 77 |ck up th|e scan w|
|00000ca0| 68 65 72 65 20 77 65 20 | 6c 65 66 74 20 6f 66 66 |here we |left off|
|00000cb0| 2e 0d 0d 20 20 20 49 66 | 20 74 68 69 73 20 69 73 |... If| this is|
|00000cc0| 20 7a 65 72 6f 2c 20 6f | 72 20 61 20 6e 75 6c 6c | zero, o|r a null|
|00000cd0| 20 73 74 72 69 6e 67 2c | 20 69 74 20 6d 65 61 6e | string,| it mean|
|00000ce0| 73 20 72 65 73 75 6d 65 | 20 74 68 65 20 73 63 61 |s resume| the sca|
|00000cf0| 6e 0d 20 20 20 62 79 20 | 61 64 76 61 6e 63 69 6e |n. by |advancin|
|00000d00| 67 20 74 6f 20 74 68 65 | 20 6e 65 78 74 20 41 52 |g to the| next AR|
|00000d10| 47 56 2d 65 6c 65 6d 65 | 6e 74 2e 20 20 2a 2f 0d |GV-eleme|nt. */.|
|00000d20| 0d 73 74 61 74 69 63 20 | 63 68 61 72 20 2a 6e 65 |.static |char *ne|
|00000d30| 78 74 63 68 61 72 3b 0d | 0d 2f 2a 20 43 61 6c 6c |xtchar;.|./* Call|
|00000d40| 65 72 73 20 73 74 6f 72 | 65 20 7a 65 72 6f 20 68 |ers stor|e zero h|
|00000d50| 65 72 65 20 74 6f 20 69 | 6e 68 69 62 69 74 20 74 |ere to i|nhibit t|
|00000d60| 68 65 20 65 72 72 6f 72 | 20 6d 65 73 73 61 67 65 |he error| message|
|00000d70| 0d 20 20 20 66 6f 72 20 | 75 6e 72 65 63 6f 67 6e |. for |unrecogn|
|00000d80| 69 7a 65 64 20 6f 70 74 | 69 6f 6e 73 2e 20 20 2a |ized opt|ions. *|
|00000d90| 2f 0d 0d 69 6e 74 20 6f | 70 74 65 72 72 20 3d 20 |/..int o|pterr = |
|00000da0| 31 3b 0d 0d 2f 2a 20 44 | 65 73 63 72 69 62 65 20 |1;../* D|escribe |
|00000db0| 68 6f 77 20 74 6f 20 64 | 65 61 6c 20 77 69 74 68 |how to d|eal with|
|00000dc0| 20 6f 70 74 69 6f 6e 73 | 20 74 68 61 74 20 66 6f | options| that fo|
|00000dd0| 6c 6c 6f 77 20 6e 6f 6e | 2d 6f 70 74 69 6f 6e 20 |llow non|-option |
|00000de0| 41 52 47 56 2d 65 6c 65 | 6d 65 6e 74 73 2e 0d 0d |ARGV-ele|ments...|
|00000df0| 20 20 20 49 66 20 74 68 | 65 20 63 61 6c 6c 65 72 | If th|e caller|
|00000e00| 20 64 69 64 20 6e 6f 74 | 20 73 70 65 63 69 66 79 | did not| specify|
|00000e10| 20 61 6e 79 74 68 69 6e | 67 2c 0d 20 20 20 74 68 | anythin|g,. th|
|00000e20| 65 20 64 65 66 61 75 6c | 74 20 69 73 20 52 45 51 |e defaul|t is REQ|
|00000e30| 55 49 52 45 5f 4f 52 44 | 45 52 20 69 66 20 74 68 |UIRE_ORD|ER if th|
|00000e40| 65 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 76 61 |e enviro|nment va|
|00000e50| 72 69 61 62 6c 65 0d 20 | 20 20 5f 50 4f 53 49 58 |riable. | _POSIX|
|00000e60| 5f 4f 50 54 49 4f 4e 5f | 4f 52 44 45 52 20 69 73 |_OPTION_|ORDER is|
|00000e70| 20 64 65 66 69 6e 65 64 | 2c 20 50 45 52 4d 55 54 | defined|, PERMUT|
|00000e80| 45 20 6f 74 68 65 72 77 | 69 73 65 2e 0d 0d 20 20 |E otherw|ise... |
|00000e90| 20 52 45 51 55 49 52 45 | 5f 4f 52 44 45 52 20 6d | REQUIRE|_ORDER m|
|00000ea0| 65 61 6e 73 20 64 6f 6e | 27 74 20 72 65 63 6f 67 |eans don|'t recog|
|00000eb0| 6e 69 7a 65 20 74 68 65 | 6d 20 61 73 20 6f 70 74 |nize the|m as opt|
|00000ec0| 69 6f 6e 73 3b 0d 20 20 | 20 73 74 6f 70 20 6f 70 |ions;. | stop op|
|00000ed0| 74 69 6f 6e 20 70 72 6f | 63 65 73 73 69 6e 67 20 |tion pro|cessing |
|00000ee0| 77 68 65 6e 20 74 68 65 | 20 66 69 72 73 74 20 6e |when the| first n|
|00000ef0| 6f 6e 2d 6f 70 74 69 6f | 6e 20 69 73 20 73 65 65 |on-optio|n is see|
|00000f00| 6e 2e 0d 20 20 20 54 68 | 69 73 20 69 73 20 77 68 |n.. Th|is is wh|
|00000f10| 61 74 20 55 6e 69 78 20 | 64 6f 65 73 2e 0d 20 20 |at Unix |does.. |
|00000f20| 20 54 68 69 73 20 6d 6f | 64 65 20 6f 66 20 6f 70 | This mo|de of op|
|00000f30| 65 72 61 74 69 6f 6e 20 | 69 73 20 73 65 6c 65 63 |eration |is selec|
|00000f40| 74 65 64 20 62 79 20 65 | 69 74 68 65 72 20 73 65 |ted by e|ither se|
|00000f50| 74 74 69 6e 67 20 74 68 | 65 20 65 6e 76 69 72 6f |tting th|e enviro|
|00000f60| 6e 6d 65 6e 74 0d 20 20 | 20 76 61 72 69 61 62 6c |nment. | variabl|
|00000f70| 65 20 5f 50 4f 53 49 58 | 5f 4f 50 54 49 4f 4e 5f |e _POSIX|_OPTION_|
|00000f80| 4f 52 44 45 52 2c 20 6f | 72 20 75 73 69 6e 67 20 |ORDER, o|r using |
|00000f90| 60 2b 27 20 61 73 20 74 | 68 65 20 66 69 72 73 74 |`+' as t|he first|
|00000fa0| 20 63 68 61 72 61 63 74 | 65 72 0d 20 20 20 6f 66 | charact|er. of|
|00000fb0| 20 74 68 65 20 6c 69 73 | 74 20 6f 66 20 6f 70 74 | the lis|t of opt|
|00000fc0| 69 6f 6e 20 63 68 61 72 | 61 63 74 65 72 73 2e 0d |ion char|acters..|
|00000fd0| 0d 20 20 20 50 45 52 4d | 55 54 45 20 69 73 20 74 |. PERM|UTE is t|
|00000fe0| 68 65 20 64 65 66 61 75 | 6c 74 2e 20 20 57 65 20 |he defau|lt. We |
|00000ff0| 70 65 72 6d 75 74 65 20 | 74 68 65 20 63 6f 6e 74 |permute |the cont|
|00001000| 65 6e 74 73 20 6f 66 20 | 41 52 47 56 20 61 73 20 |ents of |ARGV as |
|00001010| 77 65 20 73 63 61 6e 2c | 0d 20 20 20 73 6f 20 74 |we scan,|. so t|
|00001020| 68 61 74 20 65 76 65 6e | 74 75 61 6c 6c 79 20 61 |hat even|tually a|
|00001030| 6c 6c 20 74 68 65 20 6e | 6f 6e 2d 6f 70 74 69 6f |ll the n|on-optio|
|00001040| 6e 73 20 61 72 65 20 61 | 74 20 74 68 65 20 65 6e |ns are a|t the en|
|00001050| 64 2e 20 20 54 68 69 73 | 20 61 6c 6c 6f 77 73 20 |d. This| allows |
|00001060| 6f 70 74 69 6f 6e 73 0d | 20 20 20 74 6f 20 62 65 |options.| to be|
|00001070| 20 67 69 76 65 6e 20 69 | 6e 20 61 6e 79 20 6f 72 | given i|n any or|
|00001080| 64 65 72 2c 20 65 76 65 | 6e 20 77 69 74 68 20 70 |der, eve|n with p|
|00001090| 72 6f 67 72 61 6d 73 20 | 74 68 61 74 20 77 65 72 |rograms |that wer|
|000010a0| 65 20 6e 6f 74 20 77 72 | 69 74 74 65 6e 20 74 6f |e not wr|itten to|
|000010b0| 0d 20 20 20 65 78 70 65 | 63 74 20 74 68 69 73 2e |. expe|ct this.|
|000010c0| 0d 0d 20 20 20 52 45 54 | 55 52 4e 5f 49 4e 5f 4f |.. RET|URN_IN_O|
|000010d0| 52 44 45 52 20 69 73 20 | 61 6e 20 6f 70 74 69 6f |RDER is |an optio|
|000010e0| 6e 20 61 76 61 69 6c 61 | 62 6c 65 20 74 6f 20 70 |n availa|ble to p|
|000010f0| 72 6f 67 72 61 6d 73 20 | 74 68 61 74 20 77 65 72 |rograms |that wer|
|00001100| 65 20 77 72 69 74 74 65 | 6e 0d 20 20 20 74 6f 20 |e writte|n. to |
|00001110| 65 78 70 65 63 74 20 6f | 70 74 69 6f 6e 73 20 61 |expect o|ptions a|
|00001120| 6e 64 20 6f 74 68 65 72 | 20 41 52 47 56 2d 65 6c |nd other| ARGV-el|
|00001130| 65 6d 65 6e 74 73 20 69 | 6e 20 61 6e 79 20 6f 72 |ements i|n any or|
|00001140| 64 65 72 20 61 6e 64 20 | 74 68 61 74 20 63 61 72 |der and |that car|
|00001150| 65 20 61 62 6f 75 74 0d | 20 20 20 74 68 65 20 6f |e about.| the o|
|00001160| 72 64 65 72 69 6e 67 20 | 6f 66 20 74 68 65 20 74 |rdering |of the t|
|00001170| 77 6f 2e 20 20 57 65 20 | 64 65 73 63 72 69 62 65 |wo. We |describe|
|00001180| 20 65 61 63 68 20 6e 6f | 6e 2d 6f 70 74 69 6f 6e | each no|n-option|
|00001190| 20 41 52 47 56 2d 65 6c | 65 6d 65 6e 74 0d 20 20 | ARGV-el|ement. |
|000011a0| 20 61 73 20 69 66 20 69 | 74 20 77 65 72 65 20 74 | as if i|t were t|
|000011b0| 68 65 20 61 72 67 75 6d | 65 6e 74 20 6f 66 20 61 |he argum|ent of a|
|000011c0| 6e 20 6f 70 74 69 6f 6e | 20 77 69 74 68 20 63 68 |n option| with ch|
|000011d0| 61 72 61 63 74 65 72 20 | 63 6f 64 65 20 31 2e 0d |aracter |code 1..|
|000011e0| 20 20 20 55 73 69 6e 67 | 20 60 2d 27 20 61 73 20 | Using| `-' as |
|000011f0| 74 68 65 20 66 69 72 73 | 74 20 63 68 61 72 61 63 |the firs|t charac|
|00001200| 74 65 72 20 6f 66 20 74 | 68 65 20 6c 69 73 74 20 |ter of t|he list |
|00001210| 6f 66 20 6f 70 74 69 6f | 6e 20 63 68 61 72 61 63 |of optio|n charac|
|00001220| 74 65 72 73 0d 20 20 20 | 73 65 6c 65 63 74 73 20 |ters. |selects |
|00001230| 74 68 69 73 20 6d 6f 64 | 65 20 6f 66 20 6f 70 65 |this mod|e of ope|
|00001240| 72 61 74 69 6f 6e 2e 0d | 0d 20 20 20 54 68 65 20 |ration..|. The |
|00001250| 73 70 65 63 69 61 6c 20 | 61 72 67 75 6d 65 6e 74 |special |argument|
|00001260| 20 60 2d 2d 27 20 66 6f | 72 63 65 73 20 61 6e 20 | `--' fo|rces an |
|00001270| 65 6e 64 20 6f 66 20 6f | 70 74 69 6f 6e 2d 73 63 |end of o|ption-sc|
|00001280| 61 6e 6e 69 6e 67 20 72 | 65 67 61 72 64 6c 65 73 |anning r|egardles|
|00001290| 73 0d 20 20 20 6f 66 20 | 74 68 65 20 76 61 6c 75 |s. of |the valu|
|000012a0| 65 20 6f 66 20 60 6f 72 | 64 65 72 69 6e 67 27 2e |e of `or|dering'.|
|000012b0| 20 20 49 6e 20 74 68 65 | 20 63 61 73 65 20 6f 66 | In the| case of|
|000012c0| 20 52 45 54 55 52 4e 5f | 49 4e 5f 4f 52 44 45 52 | RETURN_|IN_ORDER|
|000012d0| 2c 20 6f 6e 6c 79 0d 20 | 20 20 60 2d 2d 27 20 63 |, only. | `--' c|
|000012e0| 61 6e 20 63 61 75 73 65 | 20 60 67 65 74 6f 70 74 |an cause| `getopt|
|000012f0| 27 20 74 6f 20 72 65 74 | 75 72 6e 20 45 4f 46 20 |' to ret|urn EOF |
|00001300| 77 69 74 68 20 60 6f 70 | 74 69 6e 64 27 20 21 3d |with `op|tind' !=|
|00001310| 20 41 52 47 43 2e 20 20 | 2a 2f 0d 0d 73 74 61 74 | ARGC. |*/..stat|
|00001320| 69 63 20 65 6e 75 6d 0d | 7b 0d 20 20 52 45 51 55 |ic enum.|{. REQU|
|00001330| 49 52 45 5f 4f 52 44 45 | 52 2c 20 50 45 52 4d 55 |IRE_ORDE|R, PERMU|
|00001340| 54 45 2c 20 52 45 54 55 | 52 4e 5f 49 4e 5f 4f 52 |TE, RETU|RN_IN_OR|
|00001350| 44 45 52 0d 7d 20 6f 72 | 64 65 72 69 6e 67 3b 0d |DER.} or|dering;.|
|00001360| 0d 2f 2a 20 44 65 73 63 | 72 69 62 65 20 74 68 65 |./* Desc|ribe the|
|00001370| 20 6c 6f 6e 67 2d 6e 61 | 6d 65 64 20 6f 70 74 69 | long-na|med opti|
|00001380| 6f 6e 73 20 72 65 71 75 | 65 73 74 65 64 20 62 79 |ons requ|ested by|
|00001390| 20 74 68 65 20 61 70 70 | 6c 69 63 61 74 69 6f 6e | the app|lication|
|000013a0| 2e 0d 20 20 20 5f 47 45 | 54 4f 50 54 5f 4c 4f 4e |.. _GE|TOPT_LON|
|000013b0| 47 5f 4f 50 54 49 4f 4e | 53 20 69 73 20 61 20 76 |G_OPTION|S is a v|
|000013c0| 65 63 74 6f 72 20 6f 66 | 20 60 73 74 72 75 63 74 |ector of| `struct|
|000013d0| 20 6f 70 74 69 6f 6e 27 | 20 74 65 72 6d 69 6e 61 | option'| termina|
|000013e0| 74 65 64 20 62 79 20 61 | 6e 0d 20 20 20 65 6c 65 |ted by a|n. ele|
|000013f0| 6d 65 6e 74 20 63 6f 6e | 74 61 69 6e 69 6e 67 20 |ment con|taining |
|00001400| 61 20 6e 61 6d 65 20 77 | 68 69 63 68 20 69 73 20 |a name w|hich is |
|00001410| 7a 65 72 6f 2e 0d 20 20 | 20 54 68 65 20 66 69 65 |zero.. | The fie|
|00001420| 6c 64 20 60 68 61 73 5f | 61 72 67 27 20 69 73 20 |ld `has_|arg' is |
|00001430| 31 20 69 66 20 74 68 65 | 20 6f 70 74 69 6f 6e 20 |1 if the| option |
|00001440| 74 61 6b 65 73 20 61 6e | 20 61 72 67 75 6d 65 6e |takes an| argumen|
|00001450| 74 2c 0d 20 20 20 32 20 | 69 66 20 69 74 20 74 61 |t,. 2 |if it ta|
|00001460| 6b 65 73 20 61 6e 20 6f | 70 74 69 6f 6e 61 6c 20 |kes an o|ptional |
|00001470| 61 72 67 75 6d 65 6e 74 | 2e 20 20 2a 2f 0d 0d 73 |argument|. */..s|
|00001480| 74 72 75 63 74 20 6f 70 | 74 69 6f 6e 0d 7b 0d 20 |truct op|tion.{. |
|00001490| 20 63 68 61 72 20 2a 6e | 61 6d 65 3b 0d 20 20 69 | char *n|ame;. i|
|000014a0| 6e 74 20 68 61 73 5f 61 | 72 67 3b 0d 20 20 69 6e |nt has_a|rg;. in|
|000014b0| 74 20 2a 66 6c 61 67 3b | 0d 20 20 69 6e 74 20 76 |t *flag;|. int v|
|000014c0| 61 6c 3b 0d 7d 3b 0d 0d | 43 4f 4e 53 54 20 73 74 |al;.};..|CONST st|
|000014d0| 72 75 63 74 20 6f 70 74 | 69 6f 6e 20 2a 5f 67 65 |ruct opt|ion *_ge|
|000014e0| 74 6f 70 74 5f 6c 6f 6e | 67 5f 6f 70 74 69 6f 6e |topt_lon|g_option|
|000014f0| 73 3b 0d 0d 69 6e 74 20 | 5f 67 65 74 6f 70 74 5f |s;..int |_getopt_|
|00001500| 6c 6f 6e 67 5f 6f 6e 6c | 79 20 3d 20 30 3b 0d 0d |long_onl|y = 0;..|
|00001510| 2f 2a 20 49 6e 64 65 78 | 20 69 6e 20 5f 47 45 54 |/* Index| in _GET|
|00001520| 4f 50 54 5f 4c 4f 4e 47 | 5f 4f 50 54 49 4f 4e 53 |OPT_LONG|_OPTIONS|
|00001530| 20 6f 66 20 74 68 65 20 | 6c 6f 6e 67 2d 6e 61 6d | of the |long-nam|
|00001540| 65 64 20 6f 70 74 69 6f | 6e 20 61 63 74 75 61 6c |ed optio|n actual|
|00001550| 6c 79 20 66 6f 75 6e 64 | 2e 0d 20 20 20 4f 6e 6c |ly found|.. Onl|
|00001560| 79 20 76 61 6c 69 64 20 | 77 68 65 6e 20 61 20 6c |y valid |when a l|
|00001570| 6f 6e 67 2d 6e 61 6d 65 | 64 20 6f 70 74 69 6f 6e |ong-name|d option|
|00001580| 20 77 61 73 20 66 6f 75 | 6e 64 2e 20 2a 2f 0d 0d | was fou|nd. */..|
|00001590| 69 6e 74 20 6f 70 74 69 | 6f 6e 5f 69 6e 64 65 78 |int opti|on_index|
|000015a0| 3b 0d 0c 0d 2f 2a 20 48 | 61 6e 64 6c 65 20 70 65 |;.../* H|andle pe|
|000015b0| 72 6d 75 74 61 74 69 6f | 6e 20 6f 66 20 61 72 67 |rmutatio|n of arg|
|000015c0| 75 6d 65 6e 74 73 2e 20 | 20 2a 2f 0d 0d 2f 2a 20 |uments. | */../* |
|000015d0| 44 65 73 63 72 69 62 65 | 20 74 68 65 20 70 61 72 |Describe| the par|
|000015e0| 74 20 6f 66 20 41 52 47 | 56 20 74 68 61 74 20 63 |t of ARG|V that c|
|000015f0| 6f 6e 74 61 69 6e 73 20 | 6e 6f 6e 2d 6f 70 74 69 |ontains |non-opti|
|00001600| 6f 6e 73 20 74 68 61 74 | 20 68 61 76 65 0d 20 20 |ons that| have. |
|00001610| 20 62 65 65 6e 20 73 6b | 69 70 70 65 64 2e 20 20 | been sk|ipped. |
|00001620| 60 66 69 72 73 74 5f 6e | 6f 6e 6f 70 74 27 20 69 |`first_n|onopt' i|
|00001630| 73 20 74 68 65 20 69 6e | 64 65 78 20 69 6e 20 41 |s the in|dex in A|
|00001640| 52 47 56 20 6f 66 20 74 | 68 65 20 66 69 72 73 74 |RGV of t|he first|
|00001650| 20 6f 66 20 74 68 65 6d | 3b 0d 20 20 20 60 6c 61 | of them|;. `la|
|00001660| 73 74 5f 6e 6f 6e 6f 70 | 74 27 20 69 73 20 74 68 |st_nonop|t' is th|
|00001670| 65 20 69 6e 64 65 78 20 | 61 66 74 65 72 20 74 68 |e index |after th|
|00001680| 65 20 6c 61 73 74 20 6f | 66 20 74 68 65 6d 2e 20 |e last o|f them. |
|00001690| 20 2a 2f 0d 0d 73 74 61 | 74 69 63 20 69 6e 74 20 | */..sta|tic int |
|000016a0| 66 69 72 73 74 5f 6e 6f | 6e 6f 70 74 3b 0d 73 74 |first_no|nopt;.st|
|000016b0| 61 74 69 63 20 69 6e 74 | 20 6c 61 73 74 5f 6e 6f |atic int| last_no|
|000016c0| 6e 6f 70 74 3b 0d 0d 2f | 2a 20 45 78 63 68 61 6e |nopt;../|* Exchan|
|000016d0| 67 65 20 74 77 6f 20 61 | 64 6a 61 63 65 6e 74 20 |ge two a|djacent |
|000016e0| 73 75 62 73 65 71 75 65 | 6e 63 65 73 20 6f 66 20 |subseque|nces of |
|000016f0| 41 52 47 56 2e 0d 20 20 | 20 4f 6e 65 20 73 75 62 |ARGV.. | One sub|
|00001700| 73 65 71 75 65 6e 63 65 | 20 69 73 20 65 6c 65 6d |sequence| is elem|
|00001710| 65 6e 74 73 20 5b 66 69 | 72 73 74 5f 6e 6f 6e 6f |ents [fi|rst_nono|
|00001720| 70 74 2c 6c 61 73 74 5f | 6e 6f 6e 6f 70 74 29 0d |pt,last_|nonopt).|
|00001730| 20 20 20 20 77 68 69 63 | 68 20 63 6f 6e 74 61 69 | whic|h contai|
|00001740| 6e 73 20 61 6c 6c 20 74 | 68 65 20 6e 6f 6e 2d 6f |ns all t|he non-o|
|00001750| 70 74 69 6f 6e 73 20 74 | 68 61 74 20 68 61 76 65 |ptions t|hat have|
|00001760| 20 62 65 65 6e 20 73 6b | 69 70 70 65 64 20 73 6f | been sk|ipped so|
|00001770| 20 66 61 72 2e 0d 20 20 | 20 54 68 65 20 6f 74 68 | far.. | The oth|
|00001780| 65 72 20 69 73 20 65 6c | 65 6d 65 6e 74 73 20 5b |er is el|ements [|
|00001790| 6c 61 73 74 5f 6e 6f 6e | 6f 70 74 2c 6f 70 74 69 |last_non|opt,opti|
|000017a0| 6e 64 29 2c 20 77 68 69 | 63 68 20 63 6f 6e 74 61 |nd), whi|ch conta|
|000017b0| 69 6e 73 20 61 6c 6c 0d | 20 20 20 20 74 68 65 20 |ins all.| the |
|000017c0| 6f 70 74 69 6f 6e 73 20 | 70 72 6f 63 65 73 73 65 |options |processe|
|000017d0| 64 20 73 69 6e 63 65 20 | 74 68 6f 73 65 20 6e 6f |d since |those no|
|000017e0| 6e 2d 6f 70 74 69 6f 6e | 73 20 77 65 72 65 20 73 |n-option|s were s|
|000017f0| 6b 69 70 70 65 64 2e 0d | 0d 20 20 20 60 66 69 72 |kipped..|. `fir|
|00001800| 73 74 5f 6e 6f 6e 6f 70 | 74 27 20 61 6e 64 20 60 |st_nonop|t' and `|
|00001810| 6c 61 73 74 5f 6e 6f 6e | 6f 70 74 27 20 61 72 65 |last_non|opt' are|
|00001820| 20 72 65 6c 6f 63 61 74 | 65 64 20 73 6f 20 74 68 | relocat|ed so th|
|00001830| 61 74 20 74 68 65 79 20 | 64 65 73 63 72 69 62 65 |at they |describe|
|00001840| 0d 20 20 20 20 74 68 65 | 20 6e 65 77 20 69 6e 64 |. the| new ind|
|00001850| 69 63 65 73 20 6f 66 20 | 74 68 65 20 6e 6f 6e 2d |ices of |the non-|
|00001860| 6f 70 74 69 6f 6e 73 20 | 69 6e 20 41 52 47 56 20 |options |in ARGV |
|00001870| 61 66 74 65 72 20 74 68 | 65 79 20 61 72 65 20 6d |after th|ey are m|
|00001880| 6f 76 65 64 2e 20 20 2a | 2f 0d 0d 73 74 61 74 69 |oved. *|/..stati|
|00001890| 63 20 76 6f 69 64 0d 65 | 78 63 68 61 6e 67 65 20 |c void.e|xchange |
|000018a0| 28 61 72 67 76 29 0d 20 | 20 20 20 20 63 68 61 72 |(argv). | char|
|000018b0| 20 2a 2a 61 72 67 76 3b | 0d 7b 0d 20 20 69 6e 74 | **argv;|.{. int|
|000018c0| 20 6e 6f 6e 6f 70 74 73 | 5f 73 69 7a 65 20 3d 20 | nonopts|_size = |
|000018d0| 28 6c 61 73 74 5f 6e 6f | 6e 6f 70 74 20 2d 20 66 |(last_no|nopt - f|
|000018e0| 69 72 73 74 5f 6e 6f 6e | 6f 70 74 29 20 2a 20 73 |irst_non|opt) * s|
|000018f0| 69 7a 65 6f 66 20 28 63 | 68 61 72 20 2a 29 3b 0d |izeof (c|har *);.|
|00001900| 20 20 63 68 61 72 20 2a | 2a 74 65 6d 70 20 3d 20 | char *|*temp = |
|00001910| 28 63 68 61 72 20 2a 2a | 29 20 61 6c 6c 6f 63 61 |(char **|) alloca|
|00001920| 20 28 6e 6f 6e 6f 70 74 | 73 5f 73 69 7a 65 29 3b | (nonopt|s_size);|
|00001930| 0d 0d 20 20 2f 2a 20 49 | 6e 74 65 72 63 68 61 6e |.. /* I|nterchan|
|00001940| 67 65 20 74 68 65 20 74 | 77 6f 20 62 6c 6f 63 6b |ge the t|wo block|
|00001950| 73 20 6f 66 20 64 61 74 | 61 20 69 6e 20 41 52 47 |s of dat|a in ARG|
|00001960| 56 2e 20 20 2a 2f 0d 0d | 20 20 62 63 6f 70 79 20 |V. */..| bcopy |
|00001970| 28 26 61 72 67 76 5b 66 | 69 72 73 74 5f 6e 6f 6e |(&argv[f|irst_non|
|00001980| 6f 70 74 5d 2c 20 74 65 | 6d 70 2c 20 6e 6f 6e 6f |opt], te|mp, nono|
|00001990| 70 74 73 5f 73 69 7a 65 | 29 3b 0d 20 20 62 63 6f |pts_size|);. bco|
|000019a0| 70 79 20 28 26 61 72 67 | 76 5b 6c 61 73 74 5f 6e |py (&arg|v[last_n|
|000019b0| 6f 6e 6f 70 74 5d 2c 20 | 26 61 72 67 76 5b 66 69 |onopt], |&argv[fi|
|000019c0| 72 73 74 5f 6e 6f 6e 6f | 70 74 5d 2c 0d 09 20 28 |rst_nono|pt],.. (|
|000019d0| 6f 70 74 69 6e 64 20 2d | 20 6c 61 73 74 5f 6e 6f |optind -| last_no|
|000019e0| 6e 6f 70 74 29 20 2a 20 | 73 69 7a 65 6f 66 20 28 |nopt) * |sizeof (|
|000019f0| 63 68 61 72 20 2a 29 29 | 3b 0d 20 20 62 63 6f 70 |char *))|;. bcop|
|00001a00| 79 20 28 74 65 6d 70 2c | 20 26 61 72 67 76 5b 66 |y (temp,| &argv[f|
|00001a10| 69 72 73 74 5f 6e 6f 6e | 6f 70 74 20 2b 20 6f 70 |irst_non|opt + op|
|00001a20| 74 69 6e 64 20 2d 20 6c | 61 73 74 5f 6e 6f 6e 6f |tind - l|ast_nono|
|00001a30| 70 74 5d 2c 20 6e 6f 6e | 6f 70 74 73 5f 73 69 7a |pt], non|opts_siz|
|00001a40| 65 29 3b 0d 0d 20 20 2f | 2a 20 55 70 64 61 74 65 |e);.. /|* Update|
|00001a50| 20 72 65 63 6f 72 64 73 | 20 66 6f 72 20 74 68 65 | records| for the|
|00001a60| 20 73 6c 6f 74 73 20 74 | 68 65 20 6e 6f 6e 2d 6f | slots t|he non-o|
|00001a70| 70 74 69 6f 6e 73 20 6e | 6f 77 20 6f 63 63 75 70 |ptions n|ow occup|
|00001a80| 79 2e 20 20 2a 2f 0d 0d | 20 20 66 69 72 73 74 5f |y. */..| first_|
|00001a90| 6e 6f 6e 6f 70 74 20 2b | 3d 20 28 6f 70 74 69 6e |nonopt +|= (optin|
|00001aa0| 64 20 2d 20 6c 61 73 74 | 5f 6e 6f 6e 6f 70 74 29 |d - last|_nonopt)|
|00001ab0| 3b 0d 20 20 6c 61 73 74 | 5f 6e 6f 6e 6f 70 74 20 |;. last|_nonopt |
|00001ac0| 3d 20 6f 70 74 69 6e 64 | 3b 0d 7d 0d 0c 0d 2f 2a |= optind|;.}.../*|
|00001ad0| 20 53 63 61 6e 20 65 6c | 65 6d 65 6e 74 73 20 6f | Scan el|ements o|
|00001ae0| 66 20 41 52 47 56 20 28 | 77 68 6f 73 65 20 6c 65 |f ARGV (|whose le|
|00001af0| 6e 67 74 68 20 69 73 20 | 41 52 47 43 29 20 66 6f |ngth is |ARGC) fo|
|00001b00| 72 20 6f 70 74 69 6f 6e | 20 63 68 61 72 61 63 74 |r option| charact|
|00001b10| 65 72 73 0d 20 20 20 67 | 69 76 65 6e 20 69 6e 20 |ers. g|iven in |
|00001b20| 4f 50 54 53 54 52 49 4e | 47 2e 0d 0d 20 20 20 49 |OPTSTRIN|G... I|
|00001b30| 66 20 61 6e 20 65 6c 65 | 6d 65 6e 74 20 6f 66 20 |f an ele|ment of |
|00001b40| 41 52 47 56 20 73 74 61 | 72 74 73 20 77 69 74 68 |ARGV sta|rts with|
|00001b50| 20 27 2d 27 2c 20 61 6e | 64 20 69 73 20 6e 6f 74 | '-', an|d is not|
|00001b60| 20 65 78 61 63 74 6c 79 | 20 22 2d 22 20 6f 72 20 | exactly| "-" or |
|00001b70| 22 2d 2d 22 2c 0d 20 20 | 20 74 68 65 6e 20 69 74 |"--",. | then it|
|00001b80| 20 69 73 20 61 6e 20 6f | 70 74 69 6f 6e 20 65 6c | is an o|ption el|
|00001b90| 65 6d 65 6e 74 2e 20 20 | 54 68 65 20 63 68 61 72 |ement. |The char|
|00001ba0| 61 63 74 65 72 73 20 6f | 66 20 74 68 69 73 20 65 |acters o|f this e|
|00001bb0| 6c 65 6d 65 6e 74 0d 20 | 20 20 28 61 73 69 64 65 |lement. | (aside|
|00001bc0| 20 66 72 6f 6d 20 74 68 | 65 20 69 6e 69 74 69 61 | from th|e initia|
|00001bd0| 6c 20 27 2d 27 29 20 61 | 72 65 20 6f 70 74 69 6f |l '-') a|re optio|
|00001be0| 6e 20 63 68 61 72 61 63 | 74 65 72 73 2e 20 20 49 |n charac|ters. I|
|00001bf0| 66 20 60 67 65 74 6f 70 | 74 27 0d 20 20 20 69 73 |f `getop|t'. is|
|00001c00| 20 63 61 6c 6c 65 64 20 | 72 65 70 65 61 74 65 64 | called |repeated|
|00001c10| 6c 79 2c 20 69 74 20 72 | 65 74 75 72 6e 73 20 73 |ly, it r|eturns s|
|00001c20| 75 63 63 65 73 73 69 76 | 65 6c 79 20 65 61 63 68 |uccessiv|ely each|
|00001c30| 20 6f 66 20 74 68 65 20 | 6f 70 74 69 6f 6e 20 63 | of the |option c|
|00001c40| 68 61 72 61 63 74 65 72 | 73 0d 20 20 20 66 72 6f |haracter|s. fro|
|00001c50| 6d 20 65 61 63 68 20 6f | 66 20 74 68 65 20 6f 70 |m each o|f the op|
|00001c60| 74 69 6f 6e 20 65 6c 65 | 6d 65 6e 74 73 2e 0d 0d |tion ele|ments...|
|00001c70| 20 20 20 49 66 20 60 67 | 65 74 6f 70 74 27 20 66 | If `g|etopt' f|
|00001c80| 69 6e 64 73 20 61 6e 6f | 74 68 65 72 20 6f 70 74 |inds ano|ther opt|
|00001c90| 69 6f 6e 20 63 68 61 72 | 61 63 74 65 72 2c 20 69 |ion char|acter, i|
|00001ca0| 74 20 72 65 74 75 72 6e | 73 20 74 68 61 74 20 63 |t return|s that c|
|00001cb0| 68 61 72 61 63 74 65 72 | 2c 0d 20 20 20 75 70 64 |haracter|,. upd|
|00001cc0| 61 74 69 6e 67 20 60 6f | 70 74 69 6e 64 27 20 61 |ating `o|ptind' a|
|00001cd0| 6e 64 20 60 6e 65 78 74 | 63 68 61 72 27 20 73 6f |nd `next|char' so|
|00001ce0| 20 74 68 61 74 20 74 68 | 65 20 6e 65 78 74 20 63 | that th|e next c|
|00001cf0| 61 6c 6c 20 74 6f 20 60 | 67 65 74 6f 70 74 27 20 |all to `|getopt' |
|00001d00| 63 61 6e 0d 20 20 20 72 | 65 73 75 6d 65 20 74 68 |can. r|esume th|
|00001d10| 65 20 73 63 61 6e 20 77 | 69 74 68 20 74 68 65 20 |e scan w|ith the |
|00001d20| 66 6f 6c 6c 6f 77 69 6e | 67 20 6f 70 74 69 6f 6e |followin|g option|
|00001d30| 20 63 68 61 72 61 63 74 | 65 72 20 6f 72 20 41 52 | charact|er or AR|
|00001d40| 47 56 2d 65 6c 65 6d 65 | 6e 74 2e 0d 0d 20 20 20 |GV-eleme|nt... |
|00001d50| 49 66 20 74 68 65 72 65 | 20 61 72 65 20 6e 6f 20 |If there| are no |
|00001d60| 6d 6f 72 65 20 6f 70 74 | 69 6f 6e 20 63 68 61 72 |more opt|ion char|
|00001d70| 61 63 74 65 72 73 2c 20 | 60 67 65 74 6f 70 74 27 |acters, |`getopt'|
|00001d80| 20 72 65 74 75 72 6e 73 | 20 60 45 4f 46 27 2e 0d | returns| `EOF'..|
|00001d90| 20 20 20 54 68 65 6e 20 | 60 6f 70 74 69 6e 64 27 | Then |`optind'|
|00001da0| 20 69 73 20 74 68 65 20 | 69 6e 64 65 78 20 69 6e | is the |index in|
|00001db0| 20 41 52 47 56 20 6f 66 | 20 74 68 65 20 66 69 72 | ARGV of| the fir|
|00001dc0| 73 74 20 41 52 47 56 2d | 65 6c 65 6d 65 6e 74 0d |st ARGV-|element.|
|00001dd0| 20 20 20 74 68 61 74 20 | 69 73 20 6e 6f 74 20 61 | that |is not a|
|00001de0| 6e 20 6f 70 74 69 6f 6e | 2e 20 20 28 54 68 65 20 |n option|. (The |
|00001df0| 41 52 47 56 2d 65 6c 65 | 6d 65 6e 74 73 20 68 61 |ARGV-ele|ments ha|
|00001e00| 76 65 20 62 65 65 6e 20 | 70 65 72 6d 75 74 65 64 |ve been |permuted|
|00001e10| 0d 20 20 20 73 6f 20 74 | 68 61 74 20 74 68 6f 73 |. so t|hat thos|
|00001e20| 65 20 74 68 61 74 20 61 | 72 65 20 6e 6f 74 20 6f |e that a|re not o|
|00001e30| 70 74 69 6f 6e 73 20 6e | 6f 77 20 63 6f 6d 65 20 |ptions n|ow come |
|00001e40| 6c 61 73 74 2e 29 0d 0d | 20 20 20 4f 50 54 53 54 |last.)..| OPTST|
|00001e50| 52 49 4e 47 20 69 73 20 | 61 20 73 74 72 69 6e 67 |RING is |a string|
|00001e60| 20 63 6f 6e 74 61 69 6e | 69 6e 67 20 74 68 65 20 | contain|ing the |
|00001e70| 6c 65 67 69 74 69 6d 61 | 74 65 20 6f 70 74 69 6f |legitima|te optio|
|00001e80| 6e 20 63 68 61 72 61 63 | 74 65 72 73 2e 0d 20 20 |n charac|ters.. |
|00001e90| 20 49 66 20 61 6e 20 6f | 70 74 69 6f 6e 20 63 68 | If an o|ption ch|
|00001ea0| 61 72 61 63 74 65 72 20 | 69 73 20 73 65 65 6e 20 |aracter |is seen |
|00001eb0| 74 68 61 74 20 69 73 20 | 6e 6f 74 20 6c 69 73 74 |that is |not list|
|00001ec0| 65 64 20 69 6e 20 4f 50 | 54 53 54 52 49 4e 47 2c |ed in OP|TSTRING,|
|00001ed0| 0d 20 20 20 72 65 74 75 | 72 6e 20 27 3f 27 20 61 |. retu|rn '?' a|
|00001ee0| 66 74 65 72 20 70 72 69 | 6e 74 69 6e 67 20 61 6e |fter pri|nting an|
|00001ef0| 20 65 72 72 6f 72 20 6d | 65 73 73 61 67 65 2e 20 | error m|essage. |
|00001f00| 20 49 66 20 79 6f 75 20 | 73 65 74 20 60 6f 70 74 | If you |set `opt|
|00001f10| 65 72 72 27 20 74 6f 0d | 20 20 20 7a 65 72 6f 2c |err' to.| zero,|
|00001f20| 20 74 68 65 20 65 72 72 | 6f 72 20 6d 65 73 73 61 | the err|or messa|
|00001f30| 67 65 20 69 73 20 73 75 | 70 70 72 65 73 73 65 64 |ge is su|ppressed|
|00001f40| 20 62 75 74 20 77 65 20 | 73 74 69 6c 6c 20 72 65 | but we |still re|
|00001f50| 74 75 72 6e 20 27 3f 27 | 2e 0d 0d 20 20 20 49 66 |turn '?'|... If|
|00001f60| 20 61 20 63 68 61 72 20 | 69 6e 20 4f 50 54 53 54 | a char |in OPTST|
|00001f70| 52 49 4e 47 20 69 73 20 | 66 6f 6c 6c 6f 77 65 64 |RING is |followed|
|00001f80| 20 62 79 20 61 20 63 6f | 6c 6f 6e 2c 20 74 68 61 | by a co|lon, tha|
|00001f90| 74 20 6d 65 61 6e 73 20 | 69 74 20 77 61 6e 74 73 |t means |it wants|
|00001fa0| 20 61 6e 20 61 72 67 2c | 0d 20 20 20 73 6f 20 74 | an arg,|. so t|
|00001fb0| 68 65 20 66 6f 6c 6c 6f | 77 69 6e 67 20 74 65 78 |he follo|wing tex|
|00001fc0| 74 20 69 6e 20 74 68 65 | 20 73 61 6d 65 20 41 52 |t in the| same AR|
|00001fd0| 47 56 2d 65 6c 65 6d 65 | 6e 74 2c 20 6f 72 20 74 |GV-eleme|nt, or t|
|00001fe0| 68 65 20 74 65 78 74 20 | 6f 66 20 74 68 65 20 66 |he text |of the f|
|00001ff0| 6f 6c 6c 6f 77 69 6e 67 | 0d 20 20 20 41 52 47 56 |ollowing|. ARGV|
|00002000| 2d 65 6c 65 6d 65 6e 74 | 2c 20 69 73 20 72 65 74 |-element|, is ret|
|00002010| 75 72 6e 65 64 20 69 6e | 20 60 6f 70 74 61 72 67 |urned in| `optarg|
|00002020| 27 2e 20 20 54 77 6f 20 | 63 6f 6c 6f 6e 73 20 6d |'. Two |colons m|
|00002030| 65 61 6e 20 61 6e 20 6f | 70 74 69 6f 6e 20 74 68 |ean an o|ption th|
|00002040| 61 74 0d 20 20 20 77 61 | 6e 74 73 20 61 6e 20 6f |at. wa|nts an o|
|00002050| 70 74 69 6f 6e 61 6c 20 | 61 72 67 3b 20 69 66 20 |ptional |arg; if |
|00002060| 74 68 65 72 65 20 69 73 | 20 74 65 78 74 20 69 6e |there is| text in|
|00002070| 20 74 68 65 20 63 75 72 | 72 65 6e 74 20 41 52 47 | the cur|rent ARG|
|00002080| 56 2d 65 6c 65 6d 65 6e | 74 2c 0d 20 20 20 69 74 |V-elemen|t,. it|
|00002090| 20 69 73 20 72 65 74 75 | 72 6e 65 64 20 69 6e 20 | is retu|rned in |
|000020a0| 60 6f 70 74 61 72 67 27 | 2c 20 6f 74 68 65 72 77 |`optarg'|, otherw|
|000020b0| 69 73 65 20 60 6f 70 74 | 61 72 67 27 20 69 73 20 |ise `opt|arg' is |
|000020c0| 73 65 74 20 74 6f 20 7a | 65 72 6f 2e 0d 0d 20 20 |set to z|ero... |
|000020d0| 20 49 66 20 4f 50 54 53 | 54 52 49 4e 47 20 73 74 | If OPTS|TRING st|
|000020e0| 61 72 74 73 20 77 69 74 | 68 20 60 2d 27 20 6f 72 |arts wit|h `-' or|
|000020f0| 20 60 2b 27 2c 20 69 74 | 20 72 65 71 75 65 73 74 | `+', it| request|
|00002100| 73 20 64 69 66 66 65 72 | 65 6e 74 20 6d 65 74 68 |s differ|ent meth|
|00002110| 6f 64 73 20 6f 66 0d 20 | 20 20 68 61 6e 64 6c 69 |ods of. | handli|
|00002120| 6e 67 20 74 68 65 20 6e | 6f 6e 2d 6f 70 74 69 6f |ng the n|on-optio|
|00002130| 6e 20 41 52 47 56 2d 65 | 6c 65 6d 65 6e 74 73 2e |n ARGV-e|lements.|
|00002140| 0d 20 20 20 53 65 65 20 | 74 68 65 20 63 6f 6d 6d |. See |the comm|
|00002150| 65 6e 74 73 20 61 62 6f | 75 74 20 52 45 54 55 52 |ents abo|ut RETUR|
|00002160| 4e 5f 49 4e 5f 4f 52 44 | 45 52 20 61 6e 64 20 52 |N_IN_ORD|ER and R|
|00002170| 45 51 55 49 52 45 5f 4f | 52 44 45 52 2c 20 61 62 |EQUIRE_O|RDER, ab|
|00002180| 6f 76 65 2e 0d 0d 20 20 | 20 4c 6f 6e 67 2d 6e 61 |ove... | Long-na|
|00002190| 6d 65 64 20 6f 70 74 69 | 6f 6e 73 20 62 65 67 69 |med opti|ons begi|
|000021a0| 6e 20 77 69 74 68 20 60 | 2b 27 20 69 6e 73 74 65 |n with `|+' inste|
|000021b0| 61 64 20 6f 66 20 60 2d | 27 2e 0d 20 20 20 54 68 |ad of `-|'.. Th|
|000021c0| 65 69 72 20 6e 61 6d 65 | 73 20 6d 61 79 20 62 65 |eir name|s may be|
|000021d0| 20 61 62 62 72 65 76 69 | 61 74 65 64 20 61 73 20 | abbrevi|ated as |
|000021e0| 6c 6f 6e 67 20 61 73 20 | 74 68 65 20 61 62 62 72 |long as |the abbr|
|000021f0| 65 76 69 61 74 69 6f 6e | 20 69 73 20 75 6e 69 71 |eviation| is uniq|
|00002200| 75 65 0d 20 20 20 6f 72 | 20 69 73 20 61 6e 20 65 |ue. or| is an e|
|00002210| 78 61 63 74 20 6d 61 74 | 63 68 20 66 6f 72 20 73 |xact mat|ch for s|
|00002220| 6f 6d 65 20 64 65 66 69 | 6e 65 64 20 6f 70 74 69 |ome defi|ned opti|
|00002230| 6f 6e 2e 20 20 49 66 20 | 74 68 65 79 20 68 61 76 |on. If |they hav|
|00002240| 65 20 61 6e 0d 20 20 20 | 61 72 67 75 6d 65 6e 74 |e an. |argument|
|00002250| 2c 20 69 74 20 66 6f 6c | 6c 6f 77 73 20 74 68 65 |, it fol|lows the|
|00002260| 20 6f 70 74 69 6f 6e 20 | 6e 61 6d 65 20 69 6e 20 | option |name in |
|00002270| 74 68 65 20 73 61 6d 65 | 20 41 52 47 56 2d 65 6c |the same| ARGV-el|
|00002280| 65 6d 65 6e 74 2c 20 73 | 65 70 61 72 61 74 65 64 |ement, s|eparated|
|00002290| 0d 20 20 20 66 72 6f 6d | 20 74 68 65 20 6f 70 74 |. from| the opt|
|000022a0| 69 6f 6e 20 6e 61 6d 65 | 20 62 79 20 61 20 60 3d |ion name| by a `=|
|000022b0| 27 2c 20 6f 72 20 65 6c | 73 65 20 74 68 65 20 69 |', or el|se the i|
|000022c0| 6e 20 6e 65 78 74 20 41 | 52 47 56 2d 65 6c 65 6d |n next A|RGV-elem|
|000022d0| 65 6e 74 2e 0d 20 20 20 | 57 68 65 6e 20 60 67 65 |ent.. |When `ge|
|000022e0| 74 6f 70 74 27 20 66 69 | 6e 64 73 20 61 20 6c 6f |topt' fi|nds a lo|
|000022f0| 6e 67 2d 6e 61 6d 65 64 | 20 6f 70 74 69 6f 6e 2c |ng-named| option,|
|00002300| 20 69 74 20 72 65 74 75 | 72 6e 73 20 30 20 69 66 | it retu|rns 0 if|
|00002310| 20 74 68 61 74 20 6f 70 | 74 69 6f 6e 27 73 0d 20 | that op|tion's. |
|00002320| 20 20 60 66 6c 61 67 27 | 20 66 69 65 6c 64 20 69 | `flag'| field i|
|00002330| 73 20 6e 6f 6e 7a 65 72 | 6f 2c 20 74 68 65 20 76 |s nonzer|o, the v|
|00002340| 61 6c 75 65 20 6f 66 20 | 74 68 65 20 6f 70 74 69 |alue of |the opti|
|00002350| 6f 6e 27 73 20 60 76 61 | 6c 27 20 66 69 65 6c 64 |on's `va|l' field|
|00002360| 0d 20 20 20 6f 74 68 65 | 72 77 69 73 65 2e 20 20 |. othe|rwise. |
|00002370| 2a 2f 0d 0d 69 6e 74 0d | 67 65 74 6f 70 74 20 28 |*/..int.|getopt (|
|00002380| 61 72 67 63 2c 20 61 72 | 67 76 2c 20 6f 70 74 73 |argc, ar|gv, opts|
|00002390| 74 72 69 6e 67 29 0d 20 | 20 20 20 20 69 6e 74 20 |tring). | int |
|000023a0| 61 72 67 63 3b 0d 20 20 | 20 20 20 63 68 61 72 20 |argc;. | char |
|000023b0| 2a 2a 61 72 67 76 3b 0d | 20 20 20 20 20 43 4f 4e |**argv;.| CON|
|000023c0| 53 54 20 63 68 61 72 20 | 2a 6f 70 74 73 74 72 69 |ST char |*optstri|
|000023d0| 6e 67 3b 0d 7b 0d 20 20 | 6f 70 74 61 72 67 20 3d |ng;.{. |optarg =|
|000023e0| 20 30 3b 0d 0d 20 20 2f | 2a 20 49 6e 69 74 69 61 | 0;.. /|* Initia|
|000023f0| 6c 69 7a 65 20 74 68 65 | 20 69 6e 74 65 72 6e 61 |lize the| interna|
|00002400| 6c 20 64 61 74 61 20 77 | 68 65 6e 20 74 68 65 20 |l data w|hen the |
|00002410| 66 69 72 73 74 20 63 61 | 6c 6c 20 69 73 20 6d 61 |first ca|ll is ma|
|00002420| 64 65 2e 0d 20 20 20 20 | 20 53 74 61 72 74 20 70 |de.. | Start p|
|00002430| 72 6f 63 65 73 73 69 6e | 67 20 6f 70 74 69 6f 6e |rocessin|g option|
|00002440| 73 20 77 69 74 68 20 41 | 52 47 56 2d 65 6c 65 6d |s with A|RGV-elem|
|00002450| 65 6e 74 20 31 20 28 73 | 69 6e 63 65 20 41 52 47 |ent 1 (s|ince ARG|
|00002460| 56 2d 65 6c 65 6d 65 6e | 74 20 30 0d 20 20 20 20 |V-elemen|t 0. |
|00002470| 20 69 73 20 74 68 65 20 | 70 72 6f 67 72 61 6d 20 | is the |program |
|00002480| 6e 61 6d 65 29 3b 20 74 | 68 65 20 73 65 71 75 65 |name); t|he seque|
|00002490| 6e 63 65 20 6f 66 20 70 | 72 65 76 69 6f 75 73 6c |nce of p|reviousl|
|000024a0| 79 20 73 6b 69 70 70 65 | 64 0d 20 20 20 20 20 6e |y skippe|d. n|
|000024b0| 6f 6e 2d 6f 70 74 69 6f | 6e 20 41 52 47 56 2d 65 |on-optio|n ARGV-e|
|000024c0| 6c 65 6d 65 6e 74 73 20 | 69 73 20 65 6d 70 74 79 |lements |is empty|
|000024d0| 2e 20 20 2a 2f 0d 0d 20 | 20 69 66 20 28 6f 70 74 |. */.. | if (opt|
|000024e0| 69 6e 64 20 3d 3d 20 30 | 29 0d 20 20 20 20 7b 0d |ind == 0|). {.|
|000024f0| 20 20 20 20 20 20 66 69 | 72 73 74 5f 6e 6f 6e 6f | fi|rst_nono|
|00002500| 70 74 20 3d 20 6c 61 73 | 74 5f 6e 6f 6e 6f 70 74 |pt = las|t_nonopt|
|00002510| 20 3d 20 6f 70 74 69 6e | 64 20 3d 20 31 3b 0d 0d | = optin|d = 1;..|
|00002520| 20 20 20 20 20 20 6e 65 | 78 74 63 68 61 72 20 3d | ne|xtchar =|
|00002530| 20 30 3b 0d 0d 20 20 20 | 20 20 20 2f 2a 20 44 65 | 0;.. | /* De|
|00002540| 74 65 72 6d 69 6e 65 20 | 68 6f 77 20 74 6f 20 68 |termine |how to h|
|00002550| 61 6e 64 6c 65 20 74 68 | 65 20 6f 72 64 65 72 69 |andle th|e orderi|
|00002560| 6e 67 20 6f 66 20 6f 70 | 74 69 6f 6e 73 20 61 6e |ng of op|tions an|
|00002570| 64 20 6e 6f 6e 6f 70 74 | 69 6f 6e 73 2e 20 20 2a |d nonopt|ions. *|
|00002580| 2f 0d 0d 20 20 20 20 20 | 20 69 66 20 28 6f 70 74 |/.. | if (opt|
|00002590| 73 74 72 69 6e 67 5b 30 | 5d 20 3d 3d 20 27 2d 27 |string[0|] == '-'|
|000025a0| 29 0d 09 7b 0d 09 20 20 | 6f 72 64 65 72 69 6e 67 |)..{.. |ordering|
|000025b0| 20 3d 20 52 45 54 55 52 | 4e 5f 49 4e 5f 4f 52 44 | = RETUR|N_IN_ORD|
|000025c0| 45 52 3b 0d 09 20 20 2b | 2b 6f 70 74 73 74 72 69 |ER;.. +|+optstri|
|000025d0| 6e 67 3b 0d 09 7d 0d 20 | 20 20 20 20 20 65 6c 73 |ng;..}. | els|
|000025e0| 65 20 69 66 20 28 6f 70 | 74 73 74 72 69 6e 67 5b |e if (op|tstring[|
|000025f0| 30 5d 20 3d 3d 20 27 2b | 27 29 0d 09 7b 0d 09 20 |0] == '+|')..{.. |
|00002600| 20 6f 72 64 65 72 69 6e | 67 20 3d 20 52 45 51 55 | orderin|g = REQU|
|00002610| 49 52 45 5f 4f 52 44 45 | 52 3b 0d 09 20 20 2b 2b |IRE_ORDE|R;.. ++|
|00002620| 6f 70 74 73 74 72 69 6e | 67 3b 0d 09 7d 0d 20 20 |optstrin|g;..}. |
|00002630| 20 20 20 20 65 6c 73 65 | 20 69 66 20 28 67 65 74 | else| if (get|
|00002640| 65 6e 76 20 28 22 5f 50 | 4f 53 49 58 5f 4f 50 54 |env ("_P|OSIX_OPT|
|00002650| 49 4f 4e 5f 4f 52 44 45 | 52 22 29 20 21 3d 20 30 |ION_ORDE|R") != 0|
|00002660| 29 0d 09 6f 72 64 65 72 | 69 6e 67 20 3d 20 52 45 |)..order|ing = RE|
|00002670| 51 55 49 52 45 5f 4f 52 | 44 45 52 3b 0d 20 20 20 |QUIRE_OR|DER;. |
|00002680| 20 20 20 65 6c 73 65 0d | 09 6f 72 64 65 72 69 6e | else.|.orderin|
|00002690| 67 20 3d 20 50 45 52 4d | 55 54 45 3b 0d 20 20 20 |g = PERM|UTE;. |
|000026a0| 20 7d 0d 0d 20 20 69 66 | 20 28 6e 65 78 74 63 68 | }.. if| (nextch|
|000026b0| 61 72 20 3d 3d 20 30 20 | 7c 7c 20 2a 6e 65 78 74 |ar == 0 ||| *next|
|000026c0| 63 68 61 72 20 3d 3d 20 | 30 29 0d 20 20 20 20 7b |char == |0). {|
|000026d0| 0d 20 20 20 20 20 20 69 | 66 20 28 6f 72 64 65 72 |. i|f (order|
|000026e0| 69 6e 67 20 3d 3d 20 50 | 45 52 4d 55 54 45 29 0d |ing == P|ERMUTE).|
|000026f0| 09 7b 0d 09 20 20 2f 2a | 20 49 66 20 77 65 20 68 |.{.. /*| If we h|
|00002700| 61 76 65 20 6a 75 73 74 | 20 70 72 6f 63 65 73 73 |ave just| process|
|00002710| 65 64 20 73 6f 6d 65 20 | 6f 70 74 69 6f 6e 73 20 |ed some |options |
|00002720| 66 6f 6c 6c 6f 77 69 6e | 67 20 73 6f 6d 65 20 6e |followin|g some n|
|00002730| 6f 6e 2d 6f 70 74 69 6f | 6e 73 2c 0d 09 20 20 20 |on-optio|ns,.. |
|00002740| 20 20 65 78 63 68 61 6e | 67 65 20 74 68 65 6d 20 | exchan|ge them |
|00002750| 73 6f 20 74 68 61 74 20 | 74 68 65 20 6f 70 74 69 |so that |the opti|
|00002760| 6f 6e 73 20 63 6f 6d 65 | 20 66 69 72 73 74 2e 20 |ons come| first. |
|00002770| 20 2a 2f 0d 0d 09 20 20 | 69 66 20 28 66 69 72 73 | */... |if (firs|
|00002780| 74 5f 6e 6f 6e 6f 70 74 | 20 21 3d 20 6c 61 73 74 |t_nonopt| != last|
|00002790| 5f 6e 6f 6e 6f 70 74 20 | 26 26 20 6c 61 73 74 5f |_nonopt |&& last_|
|000027a0| 6e 6f 6e 6f 70 74 20 21 | 3d 20 6f 70 74 69 6e 64 |nonopt !|= optind|
|000027b0| 29 0d 09 20 20 20 20 65 | 78 63 68 61 6e 67 65 20 |).. e|xchange |
|000027c0| 28 61 72 67 76 29 3b 0d | 09 20 20 65 6c 73 65 20 |(argv);.|. else |
|000027d0| 69 66 20 28 6c 61 73 74 | 5f 6e 6f 6e 6f 70 74 20 |if (last|_nonopt |
|000027e0| 21 3d 20 6f 70 74 69 6e | 64 29 0d 09 20 20 20 20 |!= optin|d).. |
|000027f0| 66 69 72 73 74 5f 6e 6f | 6e 6f 70 74 20 3d 20 6f |first_no|nopt = o|
|00002800| 70 74 69 6e 64 3b 0d 0d | 09 20 20 2f 2a 20 4e 6f |ptind;..|. /* No|
|00002810| 77 20 73 6b 69 70 20 61 | 6e 79 20 61 64 64 69 74 |w skip a|ny addit|
|00002820| 69 6f 6e 61 6c 20 6e 6f | 6e 2d 6f 70 74 69 6f 6e |ional no|n-option|
|00002830| 73 0d 09 20 20 20 20 20 | 61 6e 64 20 65 78 74 65 |s.. |and exte|
|00002840| 6e 64 20 74 68 65 20 72 | 61 6e 67 65 20 6f 66 20 |nd the r|ange of |
|00002850| 6e 6f 6e 2d 6f 70 74 69 | 6f 6e 73 20 70 72 65 76 |non-opti|ons prev|
|00002860| 69 6f 75 73 6c 79 20 73 | 6b 69 70 70 65 64 2e 20 |iously s|kipped. |
|00002870| 20 2a 2f 0d 0d 09 20 20 | 77 68 69 6c 65 20 28 6f | */... |while (o|
|00002880| 70 74 69 6e 64 20 3c 20 | 61 72 67 63 0d 09 09 20 |ptind < |argc... |
|00002890| 26 26 20 28 61 72 67 76 | 5b 6f 70 74 69 6e 64 5d |&& (argv|[optind]|
|000028a0| 5b 30 5d 20 21 3d 20 27 | 2d 27 0d 09 09 20 20 20 |[0] != '|-'... |
|000028b0| 20 20 7c 7c 20 61 72 67 | 76 5b 6f 70 74 69 6e 64 | || arg|v[optind|
|000028c0| 5d 5b 31 5d 20 3d 3d 20 | 30 29 0d 09 09 20 26 26 |][1] == |0)... &&|
|000028d0| 20 28 5f 67 65 74 6f 70 | 74 5f 6c 6f 6e 67 5f 6f | (_getop|t_long_o|
|000028e0| 70 74 69 6f 6e 73 20 3d | 3d 20 30 0d 09 09 20 20 |ptions =|= 0... |
|000028f0| 20 20 20 7c 7c 20 61 72 | 67 76 5b 6f 70 74 69 6e | || ar|gv[optin|
|00002900| 64 5d 5b 30 5d 20 21 3d | 20 27 2b 27 0d 09 09 20 |d][0] !=| '+'... |
|00002910| 20 20 20 20 7c 7c 20 61 | 72 67 76 5b 6f 70 74 69 | || a|rgv[opti|
|00002920| 6e 64 5d 5b 31 5d 20 3d | 3d 20 30 29 29 0d 09 20 |nd][1] =|= 0)).. |
|00002930| 20 20 20 6f 70 74 69 6e | 64 2b 2b 3b 0d 09 20 20 | optin|d++;.. |
|00002940| 6c 61 73 74 5f 6e 6f 6e | 6f 70 74 20 3d 20 6f 70 |last_non|opt = op|
|00002950| 74 69 6e 64 3b 0d 09 7d | 0d 0d 20 20 20 20 20 20 |tind;..}|.. |
|00002960| 2f 2a 20 53 70 65 63 69 | 61 6c 20 41 52 47 56 2d |/* Speci|al ARGV-|
|00002970| 65 6c 65 6d 65 6e 74 20 | 60 2d 2d 27 20 6d 65 61 |element |`--' mea|
|00002980| 6e 73 20 70 72 65 6d 61 | 74 75 72 65 20 65 6e 64 |ns prema|ture end|
|00002990| 20 6f 66 20 6f 70 74 69 | 6f 6e 73 2e 0d 09 20 53 | of opti|ons... S|
|000029a0| 6b 69 70 20 69 74 20 6c | 69 6b 65 20 61 20 6e 75 |kip it l|ike a nu|
|000029b0| 6c 6c 20 6f 70 74 69 6f | 6e 2c 0d 09 20 74 68 65 |ll optio|n,.. the|
|000029c0| 6e 20 65 78 63 68 61 6e | 67 65 20 77 69 74 68 20 |n exchan|ge with |
|000029d0| 70 72 65 76 69 6f 75 73 | 20 6e 6f 6e 2d 6f 70 74 |previous| non-opt|
|000029e0| 69 6f 6e 73 20 61 73 20 | 69 66 20 69 74 20 77 65 |ions as |if it we|
|000029f0| 72 65 20 61 6e 20 6f 70 | 74 69 6f 6e 2c 0d 09 20 |re an op|tion,.. |
|00002a00| 74 68 65 6e 20 73 6b 69 | 70 20 65 76 65 72 79 74 |then ski|p everyt|
|00002a10| 68 69 6e 67 20 65 6c 73 | 65 20 6c 69 6b 65 20 61 |hing els|e like a|
|00002a20| 20 6e 6f 6e 2d 6f 70 74 | 69 6f 6e 2e 20 20 2a 2f | non-opt|ion. */|
|00002a30| 0d 0d 20 20 20 20 20 20 | 69 66 20 28 6f 70 74 69 |.. |if (opti|
|00002a40| 6e 64 20 21 3d 20 61 72 | 67 63 20 26 26 20 21 73 |nd != ar|gc && !s|
|00002a50| 74 72 63 6d 70 20 28 61 | 72 67 76 5b 6f 70 74 69 |trcmp (a|rgv[opti|
|00002a60| 6e 64 5d 2c 20 22 2d 2d | 22 29 29 0d 09 7b 0d 09 |nd], "--|"))..{..|
|00002a70| 20 20 6f 70 74 69 6e 64 | 2b 2b 3b 0d 0d 09 20 20 | optind|++;... |
|00002a80| 69 66 20 28 66 69 72 73 | 74 5f 6e 6f 6e 6f 70 74 |if (firs|t_nonopt|
|00002a90| 20 21 3d 20 6c 61 73 74 | 5f 6e 6f 6e 6f 70 74 20 | != last|_nonopt |
|00002aa0| 26 26 20 6c 61 73 74 5f | 6e 6f 6e 6f 70 74 20 21 |&& last_|nonopt !|
|00002ab0| 3d 20 6f 70 74 69 6e 64 | 29 0d 09 20 20 20 20 65 |= optind|).. e|
|00002ac0| 78 63 68 61 6e 67 65 20 | 28 61 72 67 76 29 3b 0d |xchange |(argv);.|
|00002ad0| 09 20 20 65 6c 73 65 20 | 69 66 20 28 66 69 72 73 |. else |if (firs|
|00002ae0| 74 5f 6e 6f 6e 6f 70 74 | 20 3d 3d 20 6c 61 73 74 |t_nonopt| == last|
|00002af0| 5f 6e 6f 6e 6f 70 74 29 | 0d 09 20 20 20 20 66 69 |_nonopt)|.. fi|
|00002b00| 72 73 74 5f 6e 6f 6e 6f | 70 74 20 3d 20 6f 70 74 |rst_nono|pt = opt|
|00002b10| 69 6e 64 3b 0d 09 20 20 | 6c 61 73 74 5f 6e 6f 6e |ind;.. |last_non|
|00002b20| 6f 70 74 20 3d 20 61 72 | 67 63 3b 0d 0d 09 20 20 |opt = ar|gc;... |
|00002b30| 6f 70 74 69 6e 64 20 3d | 20 61 72 67 63 3b 0d 09 |optind =| argc;..|
|00002b40| 7d 0d 0d 20 20 20 20 20 | 20 2f 2a 20 49 66 20 77 |}.. | /* If w|
|00002b50| 65 20 68 61 76 65 20 64 | 6f 6e 65 20 61 6c 6c 20 |e have d|one all |
|00002b60| 74 68 65 20 41 52 47 56 | 2d 65 6c 65 6d 65 6e 74 |the ARGV|-element|
|00002b70| 73 2c 20 73 74 6f 70 20 | 74 68 65 20 73 63 61 6e |s, stop |the scan|
|00002b80| 0d 09 20 61 6e 64 20 62 | 61 63 6b 20 6f 76 65 72 |.. and b|ack over|
|00002b90| 20 61 6e 79 20 6e 6f 6e | 2d 6f 70 74 69 6f 6e 73 | any non|-options|
|00002ba0| 20 74 68 61 74 20 77 65 | 20 73 6b 69 70 70 65 64 | that we| skipped|
|00002bb0| 20 61 6e 64 20 70 65 72 | 6d 75 74 65 64 2e 20 20 | and per|muted. |
|00002bc0| 2a 2f 0d 0d 20 20 20 20 | 20 20 69 66 20 28 6f 70 |*/.. | if (op|
|00002bd0| 74 69 6e 64 20 3d 3d 20 | 61 72 67 63 29 0d 09 7b |tind == |argc)..{|
|00002be0| 0d 09 20 20 2f 2a 20 53 | 65 74 20 74 68 65 20 6e |.. /* S|et the n|
|00002bf0| 65 78 74 2d 61 72 67 2d | 69 6e 64 65 78 20 74 6f |ext-arg-|index to|
|00002c00| 20 70 6f 69 6e 74 20 61 | 74 20 74 68 65 20 6e 6f | point a|t the no|
|00002c10| 6e 2d 6f 70 74 69 6f 6e | 73 0d 09 20 20 20 20 20 |n-option|s.. |
|00002c20| 74 68 61 74 20 77 65 20 | 70 72 65 76 69 6f 75 73 |that we |previous|
|00002c30| 6c 79 20 73 6b 69 70 70 | 65 64 2c 20 73 6f 20 74 |ly skipp|ed, so t|
|00002c40| 68 65 20 63 61 6c 6c 65 | 72 20 77 69 6c 6c 20 64 |he calle|r will d|
|00002c50| 69 67 65 73 74 20 74 68 | 65 6d 2e 20 20 2a 2f 0d |igest th|em. */.|
|00002c60| 09 20 20 69 66 20 28 66 | 69 72 73 74 5f 6e 6f 6e |. if (f|irst_non|
|00002c70| 6f 70 74 20 21 3d 20 6c | 61 73 74 5f 6e 6f 6e 6f |opt != l|ast_nono|
|00002c80| 70 74 29 0d 09 20 20 20 | 20 6f 70 74 69 6e 64 20 |pt).. | optind |
|00002c90| 3d 20 66 69 72 73 74 5f | 6e 6f 6e 6f 70 74 3b 0d |= first_|nonopt;.|
|00002ca0| 09 20 20 72 65 74 75 72 | 6e 20 45 4f 46 3b 0d 09 |. retur|n EOF;..|
|00002cb0| 7d 0d 0d 20 20 20 20 20 | 20 2f 2a 20 49 66 20 77 |}.. | /* If w|
|00002cc0| 65 20 68 61 76 65 20 63 | 6f 6d 65 20 74 6f 20 61 |e have c|ome to a|
|00002cd0| 20 6e 6f 6e 2d 6f 70 74 | 69 6f 6e 20 61 6e 64 20 | non-opt|ion and |
|00002ce0| 64 69 64 20 6e 6f 74 20 | 70 65 72 6d 75 74 65 20 |did not |permute |
|00002cf0| 69 74 2c 0d 09 20 65 69 | 74 68 65 72 20 73 74 6f |it,.. ei|ther sto|
|00002d00| 70 20 74 68 65 20 73 63 | 61 6e 20 6f 72 20 64 65 |p the sc|an or de|
|00002d10| 73 63 72 69 62 65 20 69 | 74 20 74 6f 20 74 68 65 |scribe i|t to the|
|00002d20| 20 63 61 6c 6c 65 72 20 | 61 6e 64 20 70 61 73 73 | caller |and pass|
|00002d30| 20 69 74 20 62 79 2e 20 | 20 2a 2f 0d 0d 20 20 20 | it by. | */.. |
|00002d40| 20 20 20 69 66 20 28 28 | 61 72 67 76 5b 6f 70 74 | if ((|argv[opt|
|00002d50| 69 6e 64 5d 5b 30 5d 20 | 21 3d 20 27 2d 27 20 7c |ind][0] |!= '-' ||
|00002d60| 7c 20 61 72 67 76 5b 6f | 70 74 69 6e 64 5d 5b 31 || argv[o|ptind][1|
|00002d70| 5d 20 3d 3d 20 30 29 0d | 09 20 20 26 26 20 28 5f |] == 0).|. && (_|
|00002d80| 67 65 74 6f 70 74 5f 6c | 6f 6e 67 5f 6f 70 74 69 |getopt_l|ong_opti|
|00002d90| 6f 6e 73 20 3d 3d 20 30 | 0d 09 20 20 20 20 20 20 |ons == 0|.. |
|00002da0| 7c 7c 20 61 72 67 76 5b | 6f 70 74 69 6e 64 5d 5b ||| argv[|optind][|
|00002db0| 30 5d 20 21 3d 20 27 2b | 27 20 7c 7c 20 61 72 67 |0] != '+|' || arg|
|00002dc0| 76 5b 6f 70 74 69 6e 64 | 5d 5b 31 5d 20 3d 3d 20 |v[optind|][1] == |
|00002dd0| 30 29 29 0d 09 7b 0d 09 | 20 20 69 66 20 28 6f 72 |0))..{..| if (or|
|00002de0| 64 65 72 69 6e 67 20 3d | 3d 20 52 45 51 55 49 52 |dering =|= REQUIR|
|00002df0| 45 5f 4f 52 44 45 52 29 | 0d 09 20 20 20 20 72 65 |E_ORDER)|.. re|
|00002e00| 74 75 72 6e 20 45 4f 46 | 3b 0d 09 20 20 6f 70 74 |turn EOF|;.. opt|
|00002e10| 61 72 67 20 3d 20 61 72 | 67 76 5b 6f 70 74 69 6e |arg = ar|gv[optin|
|00002e20| 64 2b 2b 5d 3b 0d 09 20 | 20 72 65 74 75 72 6e 20 |d++];.. | return |
|00002e30| 31 3b 0d 09 7d 0d 0d 20 | 20 20 20 20 20 2f 2a 20 |1;..}.. | /* |
|00002e40| 57 65 20 68 61 76 65 20 | 66 6f 75 6e 64 20 61 6e |We have |found an|
|00002e50| 6f 74 68 65 72 20 6f 70 | 74 69 6f 6e 2d 41 52 47 |other op|tion-ARG|
|00002e60| 56 2d 65 6c 65 6d 65 6e | 74 2e 0d 09 20 53 74 61 |V-elemen|t... Sta|
|00002e70| 72 74 20 64 65 63 6f 64 | 69 6e 67 20 69 74 73 20 |rt decod|ing its |
|00002e80| 63 68 61 72 61 63 74 65 | 72 73 2e 20 20 2a 2f 0d |characte|rs. */.|
|00002e90| 0d 20 20 20 20 20 20 6e | 65 78 74 63 68 61 72 20 |. n|extchar |
|00002ea0| 3d 20 61 72 67 76 5b 6f | 70 74 69 6e 64 5d 20 2b |= argv[o|ptind] +|
|00002eb0| 20 31 3b 0d 20 20 20 20 | 7d 0d 0d 20 20 69 66 20 | 1;. |}.. if |
|00002ec0| 28 5f 67 65 74 6f 70 74 | 5f 6c 6f 6e 67 5f 6f 70 |(_getopt|_long_op|
|00002ed0| 74 69 6f 6e 73 20 21 3d | 20 30 0d 20 20 20 20 20 |tions !=| 0. |
|00002ee0| 20 26 26 20 28 61 72 67 | 76 5b 6f 70 74 69 6e 64 | && (arg|v[optind|
|00002ef0| 5d 5b 30 5d 20 3d 3d 20 | 27 2b 27 0d 09 20 20 7c |][0] == |'+'.. ||
|00002f00| 7c 20 28 5f 67 65 74 6f | 70 74 5f 6c 6f 6e 67 5f || (_geto|pt_long_|
|00002f10| 6f 6e 6c 79 20 26 26 20 | 61 72 67 76 5b 6f 70 74 |only && |argv[opt|
|00002f20| 69 6e 64 5d 5b 30 5d 20 | 3d 3d 20 27 2d 27 29 29 |ind][0] |== '-'))|
|00002f30| 0d 20 20 20 20 29 0d 20 | 20 20 20 7b 0d 20 20 20 |. ). | {. |
|00002f40| 20 20 20 43 4f 4e 53 54 | 20 73 74 72 75 63 74 20 | CONST| struct |
|00002f50| 6f 70 74 69 6f 6e 20 2a | 70 3b 0d 20 20 20 20 20 |option *|p;. |
|00002f60| 20 63 68 61 72 20 2a 73 | 20 3d 20 6e 65 78 74 63 | char *s| = nextc|
|00002f70| 68 61 72 3b 0d 20 20 20 | 20 20 20 69 6e 74 20 65 |har;. | int e|
|00002f80| 78 61 63 74 20 3d 20 30 | 3b 0d 20 20 20 20 20 20 |xact = 0|;. |
|00002f90| 69 6e 74 20 61 6d 62 69 | 67 20 3d 20 30 3b 0d 20 |int ambi|g = 0;. |
|00002fa0| 20 20 20 20 20 43 4f 4e | 53 54 20 73 74 72 75 63 | CON|ST struc|
|00002fb0| 74 20 6f 70 74 69 6f 6e | 20 2a 70 66 6f 75 6e 64 |t option| *pfound|
|00002fc0| 20 3d 20 30 3b 0d 20 20 | 20 20 20 20 69 6e 74 20 | = 0;. | int |
|00002fd0| 69 6e 64 66 6f 75 6e 64 | 3b 0d 0d 20 20 20 20 20 |indfound|;.. |
|00002fe0| 20 77 68 69 6c 65 20 28 | 2a 73 20 26 26 20 2a 73 | while (|*s && *s|
|00002ff0| 20 21 3d 20 27 3d 27 29 | 0d 09 73 2b 2b 3b 0d 0d | != '=')|..s++;..|
|00003000| 20 20 20 20 20 20 2f 2a | 20 54 65 73 74 20 61 6c | /*| Test al|
|00003010| 6c 20 6f 70 74 69 6f 6e | 73 20 66 6f 72 20 65 69 |l option|s for ei|
|00003020| 74 68 65 72 20 65 78 61 | 63 74 20 6d 61 74 63 68 |ther exa|ct match|
|00003030| 20 6f 72 20 61 62 62 72 | 65 76 69 61 74 65 64 20 | or abbr|eviated |
|00003040| 6d 61 74 63 68 65 73 2e | 20 20 2a 2f 0d 20 20 20 |matches.| */. |
|00003050| 20 20 20 66 6f 72 20 28 | 70 20 3d 20 5f 67 65 74 | for (|p = _get|
|00003060| 6f 70 74 5f 6c 6f 6e 67 | 5f 6f 70 74 69 6f 6e 73 |opt_long|_options|
|00003070| 2c 20 6f 70 74 69 6f 6e | 5f 69 6e 64 65 78 20 3d |, option|_index =|
|00003080| 20 30 3b 20 70 2d 3e 6e | 61 6d 65 3b 0d 09 20 20 | 0; p->n|ame;.. |
|00003090| 20 70 2b 2b 2c 20 6f 70 | 74 69 6f 6e 5f 69 6e 64 | p++, op|tion_ind|
|000030a0| 65 78 2b 2b 29 0d 09 69 | 66 20 28 21 73 74 72 6e |ex++)..i|f (!strn|
|000030b0| 63 6d 70 20 28 70 2d 3e | 6e 61 6d 65 2c 20 6e 65 |cmp (p->|name, ne|
|000030c0| 78 74 63 68 61 72 2c 20 | 73 20 2d 20 6e 65 78 74 |xtchar, |s - next|
|000030d0| 63 68 61 72 29 29 0d 09 | 20 20 7b 0d 09 20 20 20 |char))..| {.. |
|000030e0| 20 69 66 20 28 73 20 2d | 20 6e 65 78 74 63 68 61 | if (s -| nextcha|
|000030f0| 72 20 3d 3d 20 73 74 72 | 6c 65 6e 20 28 70 2d 3e |r == str|len (p->|
|00003100| 6e 61 6d 65 29 29 0d 09 | 20 20 20 20 20 20 7b 0d |name))..| {.|
|00003110| 09 09 2f 2a 20 45 78 61 | 63 74 20 6d 61 74 63 68 |../* Exa|ct match|
|00003120| 20 66 6f 75 6e 64 2e 20 | 20 2a 2f 0d 09 09 70 66 | found. | */...pf|
|00003130| 6f 75 6e 64 20 3d 20 70 | 3b 0d 09 09 69 6e 64 66 |ound = p|;...indf|
|00003140| 6f 75 6e 64 20 3d 20 6f | 70 74 69 6f 6e 5f 69 6e |ound = o|ption_in|
|00003150| 64 65 78 3b 0d 09 09 65 | 78 61 63 74 20 3d 20 31 |dex;...e|xact = 1|
|00003160| 3b 0d 09 09 62 72 65 61 | 6b 3b 0d 09 20 20 20 20 |;...brea|k;.. |
|00003170| 20 20 7d 0d 09 20 20 20 | 20 65 6c 73 65 20 69 66 | }.. | else if|
|00003180| 20 28 70 66 6f 75 6e 64 | 20 3d 3d 20 30 29 0d 09 | (pfound| == 0)..|
|00003190| 20 20 20 20 20 20 7b 0d | 09 09 2f 2a 20 46 69 72 | {.|../* Fir|
|000031a0| 73 74 20 6e 6f 6e 65 78 | 61 63 74 20 6d 61 74 63 |st nonex|act matc|
|000031b0| 68 20 66 6f 75 6e 64 2e | 20 20 2a 2f 0d 09 09 70 |h found.| */...p|
|000031c0| 66 6f 75 6e 64 20 3d 20 | 70 3b 0d 09 09 69 6e 64 |found = |p;...ind|
|000031d0| 66 6f 75 6e 64 20 3d 20 | 6f 70 74 69 6f 6e 5f 69 |found = |option_i|
|000031e0| 6e 64 65 78 3b 0d 09 20 | 20 20 20 20 20 7d 0d 09 |ndex;.. | }..|
|000031f0| 20 20 20 20 65 6c 73 65 | 0d 09 20 20 20 20 20 20 | else|.. |
|00003200| 2f 2a 20 53 65 63 6f 6e | 64 20 6e 6f 6e 65 78 61 |/* Secon|d nonexa|
|00003210| 63 74 20 6d 61 74 63 68 | 20 66 6f 75 6e 64 2e 20 |ct match| found. |
|00003220| 20 2a 2f 0d 09 20 20 20 | 20 20 20 61 6d 62 69 67 | */.. | ambig|
|00003230| 20 3d 20 31 3b 0d 09 20 | 20 7d 0d 0d 20 20 20 20 | = 1;.. | }.. |
|00003240| 20 20 69 66 20 28 61 6d | 62 69 67 20 26 26 20 21 | if (am|big && !|
|00003250| 65 78 61 63 74 29 0d 09 | 7b 0d 09 20 20 66 70 72 |exact)..|{.. fpr|
|00003260| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 20 22 25 |intf (st|derr, "%|
|00003270| 73 3a 20 6f 70 74 69 6f | 6e 20 60 25 73 27 20 69 |s: optio|n `%s' i|
|00003280| 73 20 61 6d 62 69 67 75 | 6f 75 73 5c 6e 22 2c 0d |s ambigu|ous\n",.|
|00003290| 09 09 20 20 20 61 72 67 | 76 5b 30 5d 2c 20 61 72 |.. arg|v[0], ar|
|000032a0| 67 76 5b 6f 70 74 69 6e | 64 5d 29 3b 0d 09 20 20 |gv[optin|d]);.. |
|000032b0| 6e 65 78 74 63 68 61 72 | 20 2b 3d 20 73 74 72 6c |nextchar| += strl|
|000032c0| 65 6e 20 28 6e 65 78 74 | 63 68 61 72 29 3b 0d 09 |en (next|char);..|
|000032d0| 20 20 6f 70 74 69 6e 64 | 2b 2b 3b 0d 09 20 20 72 | optind|++;.. r|
|000032e0| 65 74 75 72 6e 20 27 3f | 27 3b 0d 09 7d 0d 0d 20 |eturn '?|';..}.. |
|000032f0| 20 20 20 20 20 69 66 20 | 28 70 66 6f 75 6e 64 20 | if |(pfound |
|00003300| 21 3d 20 30 29 0d 09 7b | 0d 09 20 20 6f 70 74 69 |!= 0)..{|.. opti|
|00003310| 6f 6e 5f 69 6e 64 65 78 | 20 3d 20 69 6e 64 66 6f |on_index| = indfo|
|00003320| 75 6e 64 3b 0d 09 20 20 | 6f 70 74 69 6e 64 2b 2b |und;.. |optind++|
|00003330| 3b 0d 09 20 20 69 66 20 | 28 2a 73 29 0d 09 20 20 |;.. if |(*s).. |
|00003340| 20 20 7b 0d 09 20 20 20 | 20 20 20 69 66 20 28 70 | {.. | if (p|
|00003350| 66 6f 75 6e 64 2d 3e 68 | 61 73 5f 61 72 67 20 3e |found->h|as_arg >|
|00003360| 20 30 29 0d 09 09 6f 70 | 74 61 72 67 20 3d 20 73 | 0)...op|targ = s|
|00003370| 20 2b 20 31 3b 0d 09 20 | 20 20 20 20 20 65 6c 73 | + 1;.. | els|
|00003380| 65 0d 09 09 7b 0d 09 09 | 20 20 66 70 72 69 6e 74 |e...{...| fprint|
|00003390| 66 20 28 73 74 64 65 72 | 72 2c 0d 09 09 09 20 20 |f (stder|r,.... |
|000033a0| 20 22 25 73 3a 20 6f 70 | 74 69 6f 6e 20 60 25 63 | "%s: op|tion `%c|
|000033b0| 25 73 27 20 64 6f 65 73 | 6e 27 74 20 61 6c 6c 6f |%s' does|n't allo|
|000033c0| 77 20 61 6e 20 61 72 67 | 75 6d 65 6e 74 5c 6e 22 |w an arg|ument\n"|
|000033d0| 2c 0d 09 09 09 20 20 20 | 61 72 67 76 5b 30 5d 2c |,.... |argv[0],|
|000033e0| 20 61 72 67 76 5b 6f 70 | 74 69 6e 64 20 2d 20 31 | argv[op|tind - 1|
|000033f0| 5d 5b 30 5d 2c 20 70 66 | 6f 75 6e 64 2d 3e 6e 61 |][0], pf|ound->na|
|00003400| 6d 65 29 3b 0d 09 09 20 | 20 6e 65 78 74 63 68 61 |me);... | nextcha|
|00003410| 72 20 2b 3d 20 73 74 72 | 6c 65 6e 20 28 6e 65 78 |r += str|len (nex|
|00003420| 74 63 68 61 72 29 3b 0d | 09 09 20 20 72 65 74 75 |tchar);.|.. retu|
|00003430| 72 6e 20 27 3f 27 3b 0d | 09 09 7d 0d 09 20 20 20 |rn '?';.|..}.. |
|00003440| 20 7d 0d 09 20 20 65 6c | 73 65 20 69 66 20 28 70 | }.. el|se if (p|
|00003450| 66 6f 75 6e 64 2d 3e 68 | 61 73 5f 61 72 67 20 3d |found->h|as_arg =|
|00003460| 3d 20 31 29 0d 09 20 20 | 20 20 7b 0d 09 20 20 20 |= 1).. | {.. |
|00003470| 20 20 20 69 66 20 28 6f | 70 74 69 6e 64 20 3c 20 | if (o|ptind < |
|00003480| 61 72 67 63 29 0d 09 09 | 6f 70 74 61 72 67 20 3d |argc)...|optarg =|
|00003490| 20 61 72 67 76 5b 6f 70 | 74 69 6e 64 2b 2b 5d 3b | argv[op|tind++];|
|000034a0| 0d 09 20 20 20 20 20 20 | 65 6c 73 65 0d 09 09 7b |.. |else...{|
|000034b0| 0d 09 09 20 20 66 70 72 | 69 6e 74 66 20 28 73 74 |... fpr|intf (st|
|000034c0| 64 65 72 72 2c 20 22 25 | 73 3a 20 6f 70 74 69 6f |derr, "%|s: optio|
|000034d0| 6e 20 60 25 73 27 20 72 | 65 71 75 69 72 65 73 20 |n `%s' r|equires |
|000034e0| 61 6e 20 61 72 67 75 6d | 65 6e 74 5c 6e 22 2c 0d |an argum|ent\n",.|
|000034f0| 09 09 09 20 20 20 61 72 | 67 76 5b 30 5d 2c 20 61 |... ar|gv[0], a|
|00003500| 72 67 76 5b 6f 70 74 69 | 6e 64 20 2d 20 31 5d 29 |rgv[opti|nd - 1])|
|00003510| 3b 0d 09 09 20 20 6e 65 | 78 74 63 68 61 72 20 2b |;... ne|xtchar +|
|00003520| 3d 20 73 74 72 6c 65 6e | 20 28 6e 65 78 74 63 68 |= strlen| (nextch|
|00003530| 61 72 29 3b 0d 09 09 20 | 20 72 65 74 75 72 6e 20 |ar);... | return |
|00003540| 27 3f 27 3b 0d 09 09 7d | 0d 09 20 20 20 20 7d 0d |'?';...}|.. }.|
|00003550| 09 20 20 6e 65 78 74 63 | 68 61 72 20 2b 3d 20 73 |. nextc|har += s|
|00003560| 74 72 6c 65 6e 20 28 6e | 65 78 74 63 68 61 72 29 |trlen (n|extchar)|
|00003570| 3b 0d 09 20 20 69 66 20 | 28 70 66 6f 75 6e 64 2d |;.. if |(pfound-|
|00003580| 3e 66 6c 61 67 29 0d 09 | 20 20 20 20 7b 0d 09 20 |>flag)..| {.. |
|00003590| 20 20 20 20 20 2a 28 70 | 66 6f 75 6e 64 2d 3e 66 | *(p|found->f|
|000035a0| 6c 61 67 29 20 3d 20 70 | 66 6f 75 6e 64 2d 3e 76 |lag) = p|found->v|
|000035b0| 61 6c 3b 0d 09 20 20 20 | 20 20 20 72 65 74 75 72 |al;.. | retur|
|000035c0| 6e 20 30 3b 0d 09 20 20 | 20 20 7d 0d 09 20 20 72 |n 0;.. | }.. r|
|000035d0| 65 74 75 72 6e 20 70 66 | 6f 75 6e 64 2d 3e 76 61 |eturn pf|ound->va|
|000035e0| 6c 3b 0d 09 7d 0d 20 20 | 20 20 20 20 2f 2a 20 43 |l;..}. | /* C|
|000035f0| 61 6e 27 74 20 66 69 6e | 64 20 69 74 20 61 73 20 |an't fin|d it as |
|00003600| 61 20 6c 6f 6e 67 20 6f | 70 74 69 6f 6e 2e 20 20 |a long o|ption. |
|00003610| 49 66 20 74 68 69 73 20 | 69 73 20 67 65 74 6f 70 |If this |is getop|
|00003620| 74 5f 6c 6f 6e 67 5f 6f | 6e 6c 79 2c 0d 09 20 61 |t_long_o|nly,.. a|
|00003630| 6e 64 20 74 68 65 20 6f | 70 74 69 6f 6e 20 73 74 |nd the o|ption st|
|00003640| 61 72 74 73 20 77 69 74 | 68 20 27 2d 27 20 61 6e |arts wit|h '-' an|
|00003650| 64 20 69 73 20 61 20 76 | 61 6c 69 64 20 73 68 6f |d is a v|alid sho|
|00003660| 72 74 0d 09 20 6f 70 74 | 69 6f 6e 2c 20 74 68 65 |rt.. opt|ion, the|
|00003670| 6e 20 69 6e 74 65 72 70 | 72 65 74 20 69 74 20 61 |n interp|ret it a|
|00003680| 73 20 61 20 73 68 6f 72 | 74 20 6f 70 74 69 6f 6e |s a shor|t option|
|00003690| 2e 20 20 4f 74 68 65 72 | 77 69 73 65 20 69 74 27 |. Other|wise it'|
|000036a0| 73 0d 09 20 61 6e 20 65 | 72 72 6f 72 2e 20 20 2a |s.. an e|rror. *|
|000036b0| 2f 0d 20 20 20 20 20 20 | 69 66 20 28 5f 67 65 74 |/. |if (_get|
|000036c0| 6f 70 74 5f 6c 6f 6e 67 | 5f 6f 6e 6c 79 20 3d 3d |opt_long|_only ==|
|000036d0| 20 30 20 7c 7c 20 61 72 | 67 76 5b 6f 70 74 69 6e | 0 || ar|gv[optin|
|000036e0| 64 5d 5b 30 5d 20 3d 3d | 20 27 2b 27 20 7c 7c 0d |d][0] ==| '+' ||.|
|000036f0| 09 20 20 69 6e 64 65 78 | 20 28 6f 70 74 73 74 72 |. index| (optstr|
|00003700| 69 6e 67 2c 20 2a 6e 65 | 78 74 63 68 61 72 29 20 |ing, *ne|xtchar) |
|00003710| 3d 3d 20 30 29 0d 09 7b | 0d 09 20 20 69 66 20 28 |== 0)..{|.. if (|
|00003720| 6f 70 74 65 72 72 20 21 | 3d 20 30 29 0d 09 20 20 |opterr !|= 0).. |
|00003730| 20 20 66 70 72 69 6e 74 | 66 20 28 73 74 64 65 72 | fprint|f (stder|
|00003740| 72 2c 20 22 25 73 3a 20 | 75 6e 72 65 63 6f 67 6e |r, "%s: |unrecogn|
|00003750| 69 7a 65 64 20 6f 70 74 | 69 6f 6e 20 60 25 63 25 |ized opt|ion `%c%|
|00003760| 73 27 5c 6e 22 2c 0d 09 | 09 20 20 20 20 20 61 72 |s'\n",..|. ar|
|00003770| 67 76 5b 30 5d 2c 20 61 | 72 67 76 5b 6f 70 74 69 |gv[0], a|rgv[opti|
|00003780| 6e 64 5d 5b 30 5d 2c 20 | 6e 65 78 74 63 68 61 72 |nd][0], |nextchar|
|00003790| 29 3b 0d 09 20 20 6e 65 | 78 74 63 68 61 72 20 2b |);.. ne|xtchar +|
|000037a0| 3d 20 73 74 72 6c 65 6e | 20 28 6e 65 78 74 63 68 |= strlen| (nextch|
|000037b0| 61 72 29 3b 0d 09 20 20 | 6f 70 74 69 6e 64 2b 2b |ar);.. |optind++|
|000037c0| 3b 0d 09 20 20 72 65 74 | 75 72 6e 20 27 3f 27 3b |;.. ret|urn '?';|
|000037d0| 0d 09 7d 0d 20 20 20 20 | 7d 0d 0d 20 20 2f 2a 20 |..}. |}.. /* |
|000037e0| 4c 6f 6f 6b 20 61 74 20 | 61 6e 64 20 68 61 6e 64 |Look at |and hand|
|000037f0| 6c 65 20 74 68 65 20 6e | 65 78 74 20 6f 70 74 69 |le the n|ext opti|
|00003800| 6f 6e 2d 63 68 61 72 61 | 63 74 65 72 2e 20 20 2a |on-chara|cter. *|
|00003810| 2f 0d 0d 20 20 7b 0d 20 | 20 20 20 63 68 61 72 20 |/.. {. | char |
|00003820| 63 20 3d 20 2a 6e 65 78 | 74 63 68 61 72 2b 2b 3b |c = *nex|tchar++;|
|00003830| 0d 20 20 20 20 63 68 61 | 72 20 2a 74 65 6d 70 20 |. cha|r *temp |
|00003840| 3d 20 69 6e 64 65 78 20 | 28 6f 70 74 73 74 72 69 |= index |(optstri|
|00003850| 6e 67 2c 20 63 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |ng, c);.|. /* |
|00003860| 49 6e 63 72 65 6d 65 6e | 74 20 60 6f 70 74 69 6e |Incremen|t `optin|
|00003870| 64 27 20 77 68 65 6e 20 | 77 65 20 73 74 61 72 74 |d' when |we start|
|00003880| 20 74 6f 20 70 72 6f 63 | 65 73 73 20 69 74 73 20 | to proc|ess its |
|00003890| 6c 61 73 74 20 63 68 61 | 72 61 63 74 65 72 2e 20 |last cha|racter. |
|000038a0| 20 2a 2f 0d 20 20 20 20 | 69 66 20 28 2a 6e 65 78 | */. |if (*nex|
|000038b0| 74 63 68 61 72 20 3d 3d | 20 30 29 0d 20 20 20 20 |tchar ==| 0). |
|000038c0| 20 20 6f 70 74 69 6e 64 | 2b 2b 3b 0d 0d 20 20 20 | optind|++;.. |
|000038d0| 20 69 66 20 28 74 65 6d | 70 20 3d 3d 20 30 20 7c | if (tem|p == 0 ||
|000038e0| 7c 20 63 20 3d 3d 20 27 | 3a 27 29 0d 20 20 20 20 || c == '|:'). |
|000038f0| 20 20 7b 0d 09 69 66 20 | 28 6f 70 74 65 72 72 20 | {..if |(opterr |
|00003900| 21 3d 20 30 29 0d 09 20 | 20 7b 0d 09 20 20 20 20 |!= 0).. | {.. |
|00003910| 69 66 20 28 63 20 3c 20 | 30 34 30 20 7c 7c 20 63 |if (c < |040 || c|
|00003920| 20 3e 3d 20 30 31 37 37 | 29 0d 09 20 20 20 20 20 | >= 0177|).. |
|00003930| 20 66 70 72 69 6e 74 66 | 20 28 73 74 64 65 72 72 | fprintf| (stderr|
|00003940| 2c 20 22 25 73 3a 20 75 | 6e 72 65 63 6f 67 6e 69 |, "%s: u|nrecogni|
|00003950| 7a 65 64 20 6f 70 74 69 | 6f 6e 2c 20 63 68 61 72 |zed opti|on, char|
|00003960| 61 63 74 65 72 20 63 6f | 64 65 20 30 25 6f 5c 6e |acter co|de 0%o\n|
|00003970| 22 2c 0d 09 09 20 20 20 | 20 20 20 20 61 72 67 76 |",... | argv|
|00003980| 5b 30 5d 2c 20 63 29 3b | 0d 09 20 20 20 20 65 6c |[0], c);|.. el|
|00003990| 73 65 0d 09 20 20 20 20 | 20 20 66 70 72 69 6e 74 |se.. | fprint|
|000039a0| 66 20 28 73 74 64 65 72 | 72 2c 20 22 25 73 3a 20 |f (stder|r, "%s: |
|000039b0| 75 6e 72 65 63 6f 67 6e | 69 7a 65 64 20 6f 70 74 |unrecogn|ized opt|
|000039c0| 69 6f 6e 20 60 2d 25 63 | 27 5c 6e 22 2c 0d 09 09 |ion `-%c|'\n",...|
|000039d0| 20 20 20 20 20 20 20 61 | 72 67 76 5b 30 5d 2c 20 | a|rgv[0], |
|000039e0| 63 29 3b 0d 09 20 20 7d | 0d 09 72 65 74 75 72 6e |c);.. }|..return|
|000039f0| 20 27 3f 27 3b 0d 20 20 | 20 20 20 20 7d 0d 20 20 | '?';. | }. |
|00003a00| 20 20 69 66 20 28 74 65 | 6d 70 5b 31 5d 20 3d 3d | if (te|mp[1] ==|
|00003a10| 20 27 3a 27 29 0d 20 20 | 20 20 20 20 7b 0d 09 69 | ':'). | {..i|
|00003a20| 66 20 28 74 65 6d 70 5b | 32 5d 20 3d 3d 20 27 3a |f (temp[|2] == ':|
|00003a30| 27 29 0d 09 20 20 7b 0d | 09 20 20 20 20 2f 2a 20 |').. {.|. /* |
|00003a40| 54 68 69 73 20 69 73 20 | 61 6e 20 6f 70 74 69 6f |This is |an optio|
|00003a50| 6e 20 74 68 61 74 20 61 | 63 63 65 70 74 73 20 61 |n that a|ccepts a|
|00003a60| 6e 20 61 72 67 75 6d 65 | 6e 74 20 6f 70 74 69 6f |n argume|nt optio|
|00003a70| 6e 61 6c 6c 79 2e 20 20 | 2a 2f 0d 09 20 20 20 20 |nally. |*/.. |
|00003a80| 69 66 20 28 2a 6e 65 78 | 74 63 68 61 72 20 21 3d |if (*nex|tchar !=|
|00003a90| 20 30 29 0d 09 20 20 20 | 20 20 20 7b 0d 09 09 6f | 0).. | {...o|
|00003aa0| 70 74 61 72 67 20 3d 20 | 6e 65 78 74 63 68 61 72 |ptarg = |nextchar|
|00003ab0| 3b 0d 09 09 6f 70 74 69 | 6e 64 2b 2b 3b 0d 09 20 |;...opti|nd++;.. |
|00003ac0| 20 20 20 20 20 7d 0d 09 | 20 20 20 20 65 6c 73 65 | }..| else|
|00003ad0| 0d 09 20 20 20 20 20 20 | 6f 70 74 61 72 67 20 3d |.. |optarg =|
|00003ae0| 20 30 3b 0d 09 20 20 20 | 20 6e 65 78 74 63 68 61 | 0;.. | nextcha|
|00003af0| 72 20 3d 20 30 3b 0d 09 | 20 20 7d 0d 09 65 6c 73 |r = 0;..| }..els|
|00003b00| 65 0d 09 20 20 7b 0d 09 | 20 20 20 20 2f 2a 20 54 |e.. {..| /* T|
|00003b10| 68 69 73 20 69 73 20 61 | 6e 20 6f 70 74 69 6f 6e |his is a|n option|
|00003b20| 20 74 68 61 74 20 72 65 | 71 75 69 72 65 73 20 61 | that re|quires a|
|00003b30| 6e 20 61 72 67 75 6d 65 | 6e 74 2e 20 20 2a 2f 0d |n argume|nt. */.|
|00003b40| 09 20 20 20 20 69 66 20 | 28 2a 6e 65 78 74 63 68 |. if |(*nextch|
|00003b50| 61 72 20 21 3d 20 30 29 | 0d 09 20 20 20 20 20 20 |ar != 0)|.. |
|00003b60| 7b 0d 09 09 6f 70 74 61 | 72 67 20 3d 20 6e 65 78 |{...opta|rg = nex|
|00003b70| 74 63 68 61 72 3b 0d 09 | 09 2f 2a 20 49 66 20 77 |tchar;..|./* If w|
|00003b80| 65 20 65 6e 64 20 74 68 | 69 73 20 41 52 47 56 2d |e end th|is ARGV-|
|00003b90| 65 6c 65 6d 65 6e 74 20 | 62 79 20 74 61 6b 69 6e |element |by takin|
|00003ba0| 67 20 74 68 65 20 72 65 | 73 74 20 61 73 20 61 6e |g the re|st as an|
|00003bb0| 20 61 72 67 2c 0d 09 09 | 20 20 20 77 65 20 6d 75 | arg,...| we mu|
|00003bc0| 73 74 20 61 64 76 61 6e | 63 65 20 74 6f 20 74 68 |st advan|ce to th|
|00003bd0| 65 20 6e 65 78 74 20 65 | 6c 65 6d 65 6e 74 20 6e |e next e|lement n|
|00003be0| 6f 77 2e 20 20 2a 2f 0d | 09 09 6f 70 74 69 6e 64 |ow. */.|..optind|
|00003bf0| 2b 2b 3b 0d 09 20 20 20 | 20 20 20 7d 0d 09 20 20 |++;.. | }.. |
|00003c00| 20 20 65 6c 73 65 20 69 | 66 20 28 6f 70 74 69 6e | else i|f (optin|
|00003c10| 64 20 3d 3d 20 61 72 67 | 63 29 0d 09 20 20 20 20 |d == arg|c).. |
|00003c20| 20 20 7b 0d 09 09 69 66 | 20 28 6f 70 74 65 72 72 | {...if| (opterr|
|00003c30| 20 21 3d 20 30 29 0d 09 | 09 20 20 66 70 72 69 6e | != 0)..|. fprin|
|00003c40| 74 66 20 28 73 74 64 65 | 72 72 2c 20 22 25 73 3a |tf (stde|rr, "%s:|
|00003c50| 20 6f 70 74 69 6f 6e 20 | 60 2d 25 63 27 20 72 65 | option |`-%c' re|
|00003c60| 71 75 69 72 65 73 20 61 | 6e 20 61 72 67 75 6d 65 |quires a|n argume|
|00003c70| 6e 74 5c 6e 22 2c 0d 09 | 09 09 20 20 20 61 72 67 |nt\n",..|.. arg|
|00003c80| 76 5b 30 5d 2c 20 63 29 | 3b 0d 09 09 63 20 3d 20 |v[0], c)|;...c = |
|00003c90| 27 3f 27 3b 0d 09 20 20 | 20 20 20 20 7d 0d 09 20 |'?';.. | }.. |
|00003ca0| 20 20 20 65 6c 73 65 0d | 09 20 20 20 20 20 20 2f | else.|. /|
|00003cb0| 2a 20 57 65 20 61 6c 72 | 65 61 64 79 20 69 6e 63 |* We alr|eady inc|
|00003cc0| 72 65 6d 65 6e 74 65 64 | 20 60 6f 70 74 69 6e 64 |remented| `optind|
|00003cd0| 27 20 6f 6e 63 65 3b 0d | 09 09 20 69 6e 63 72 65 |' once;.|.. incre|
|00003ce0| 6d 65 6e 74 20 69 74 20 | 61 67 61 69 6e 20 77 68 |ment it |again wh|
|00003cf0| 65 6e 20 74 61 6b 69 6e | 67 20 6e 65 78 74 20 41 |en takin|g next A|
|00003d00| 52 47 56 2d 65 6c 74 20 | 61 73 20 61 72 67 75 6d |RGV-elt |as argum|
|00003d10| 65 6e 74 2e 20 20 2a 2f | 0d 09 20 20 20 20 20 20 |ent. */|.. |
|00003d20| 6f 70 74 61 72 67 20 3d | 20 61 72 67 76 5b 6f 70 |optarg =| argv[op|
|00003d30| 74 69 6e 64 2b 2b 5d 3b | 0d 09 20 20 20 20 6e 65 |tind++];|.. ne|
|00003d40| 78 74 63 68 61 72 20 3d | 20 30 3b 0d 09 20 20 7d |xtchar =| 0;.. }|
|00003d50| 0d 20 20 20 20 20 20 7d | 0d 20 20 20 20 72 65 74 |. }|. ret|
|00003d60| 75 72 6e 20 63 3b 0d 20 | 20 7d 0d 7d 0d 0c 0d 23 |urn c;. | }.}...#|
|00003d70| 69 66 64 65 66 20 54 45 | 53 54 0d 0d 2f 2a 20 43 |ifdef TE|ST../* C|
|00003d80| 6f 6d 70 69 6c 65 20 77 | 69 74 68 20 2d 44 54 45 |ompile w|ith -DTE|
|00003d90| 53 54 20 74 6f 20 6d 61 | 6b 65 20 61 6e 20 65 78 |ST to ma|ke an ex|
|00003da0| 65 63 75 74 61 62 6c 65 | 20 66 6f 72 20 75 73 65 |ecutable| for use|
|00003db0| 20 69 6e 20 74 65 73 74 | 69 6e 67 0d 20 20 20 74 | in test|ing. t|
|00003dc0| 68 65 20 61 62 6f 76 65 | 20 64 65 66 69 6e 69 74 |he above| definit|
|00003dd0| 69 6f 6e 20 6f 66 20 60 | 67 65 74 6f 70 74 27 2e |ion of `|getopt'.|
|00003de0| 20 20 2a 2f 0d 0d 69 6e | 74 0d 6d 61 69 6e 20 28 | */..in|t.main (|
|00003df0| 61 72 67 63 2c 20 61 72 | 67 76 29 0d 20 20 20 20 |argc, ar|gv). |
|00003e00| 20 69 6e 74 20 61 72 67 | 63 3b 0d 20 20 20 20 20 | int arg|c;. |
|00003e10| 63 68 61 72 20 2a 2a 61 | 72 67 76 3b 0d 7b 0d 20 |char **a|rgv;.{. |
|00003e20| 20 69 6e 74 20 63 3b 0d | 20 20 69 6e 74 20 64 69 | int c;.| int di|
|00003e30| 67 69 74 5f 6f 70 74 69 | 6e 64 20 3d 20 30 3b 0d |git_opti|nd = 0;.|
|00003e40| 0d 20 20 77 68 69 6c 65 | 20 28 31 29 0d 20 20 20 |. while| (1). |
|00003e50| 20 7b 0d 20 20 20 20 20 | 20 69 6e 74 20 74 68 69 | {. | int thi|
|00003e60| 73 5f 6f 70 74 69 6f 6e | 5f 6f 70 74 69 6e 64 20 |s_option|_optind |
|00003e70| 3d 20 6f 70 74 69 6e 64 | 20 3f 20 6f 70 74 69 6e |= optind| ? optin|
|00003e80| 64 20 3a 20 31 3b 0d 0d | 20 20 20 20 20 20 63 20 |d : 1;..| c |
|00003e90| 3d 20 67 65 74 6f 70 74 | 20 28 61 72 67 63 2c 20 |= getopt| (argc, |
|00003ea0| 61 72 67 76 2c 20 22 61 | 62 63 3a 64 3a 30 31 32 |argv, "a|bc:d:012|
|00003eb0| 33 34 35 36 37 38 39 22 | 29 3b 0d 20 20 20 20 20 |3456789"|);. |
|00003ec0| 20 69 66 20 28 63 20 3d | 3d 20 45 4f 46 29 0d 09 | if (c =|= EOF)..|
|00003ed0| 62 72 65 61 6b 3b 0d 0d | 20 20 20 20 20 20 73 77 |break;..| sw|
|00003ee0| 69 74 63 68 20 28 63 29 | 0d 09 7b 0d 09 63 61 73 |itch (c)|..{..cas|
|00003ef0| 65 20 27 30 27 3a 0d 09 | 63 61 73 65 20 27 31 27 |e '0':..|case '1'|
|00003f00| 3a 0d 09 63 61 73 65 20 | 27 32 27 3a 0d 09 63 61 |:..case |'2':..ca|
|00003f10| 73 65 20 27 33 27 3a 0d | 09 63 61 73 65 20 27 34 |se '3':.|.case '4|
|00003f20| 27 3a 0d 09 63 61 73 65 | 20 27 35 27 3a 0d 09 63 |':..case| '5':..c|
|00003f30| 61 73 65 20 27 36 27 3a | 0d 09 63 61 73 65 20 27 |ase '6':|..case '|
|00003f40| 37 27 3a 0d 09 63 61 73 | 65 20 27 38 27 3a 0d 09 |7':..cas|e '8':..|
|00003f50| 63 61 73 65 20 27 39 27 | 3a 0d 09 20 20 69 66 20 |case '9'|:.. if |
|00003f60| 28 64 69 67 69 74 5f 6f | 70 74 69 6e 64 20 21 3d |(digit_o|ptind !=|
|00003f70| 20 30 20 26 26 20 64 69 | 67 69 74 5f 6f 70 74 69 | 0 && di|git_opti|
|00003f80| 6e 64 20 21 3d 20 74 68 | 69 73 5f 6f 70 74 69 6f |nd != th|is_optio|
|00003f90| 6e 5f 6f 70 74 69 6e 64 | 29 0d 09 20 20 20 20 70 |n_optind|).. p|
|00003fa0| 72 69 6e 74 66 20 28 22 | 64 69 67 69 74 73 20 6f |rintf ("|digits o|
|00003fb0| 63 63 75 72 20 69 6e 20 | 74 77 6f 20 64 69 66 66 |ccur in |two diff|
|00003fc0| 65 72 65 6e 74 20 61 72 | 67 76 2d 65 6c 65 6d 65 |erent ar|gv-eleme|
|00003fd0| 6e 74 73 2e 5c 6e 22 29 | 3b 0d 09 20 20 64 69 67 |nts.\n")|;.. dig|
|00003fe0| 69 74 5f 6f 70 74 69 6e | 64 20 3d 20 74 68 69 73 |it_optin|d = this|
|00003ff0| 5f 6f 70 74 69 6f 6e 5f | 6f 70 74 69 6e 64 3b 0d |_option_|optind;.|
|00004000| 09 20 20 70 72 69 6e 74 | 66 20 28 22 6f 70 74 69 |. print|f ("opti|
|00004010| 6f 6e 20 25 63 5c 6e 22 | 2c 20 63 29 3b 0d 09 20 |on %c\n"|, c);.. |
|00004020| 20 62 72 65 61 6b 3b 0d | 0d 09 63 61 73 65 20 27 | break;.|..case '|
|00004030| 61 27 3a 0d 09 20 20 70 | 72 69 6e 74 66 20 28 22 |a':.. p|rintf ("|
|00004040| 6f 70 74 69 6f 6e 20 61 | 5c 6e 22 29 3b 0d 09 20 |option a|\n");.. |
|00004050| 20 62 72 65 61 6b 3b 0d | 0d 09 63 61 73 65 20 27 | break;.|..case '|
|00004060| 62 27 3a 0d 09 20 20 70 | 72 69 6e 74 66 20 28 22 |b':.. p|rintf ("|
|00004070| 6f 70 74 69 6f 6e 20 62 | 5c 6e 22 29 3b 0d 09 20 |option b|\n");.. |
|00004080| 20 62 72 65 61 6b 3b 0d | 0d 09 63 61 73 65 20 27 | break;.|..case '|
|00004090| 63 27 3a 0d 09 20 20 70 | 72 69 6e 74 66 20 28 22 |c':.. p|rintf ("|
|000040a0| 6f 70 74 69 6f 6e 20 63 | 20 77 69 74 68 20 76 61 |option c| with va|
|000040b0| 6c 75 65 20 60 25 73 27 | 5c 6e 22 2c 20 6f 70 74 |lue `%s'|\n", opt|
|000040c0| 61 72 67 29 3b 0d 09 20 | 20 62 72 65 61 6b 3b 0d |arg);.. | break;.|
|000040d0| 0d 09 63 61 73 65 20 27 | 3f 27 3a 0d 09 20 20 62 |..case '|?':.. b|
|000040e0| 72 65 61 6b 3b 0d 0d 09 | 64 65 66 61 75 6c 74 3a |reak;...|default:|
|000040f0| 0d 09 20 20 70 72 69 6e | 74 66 20 28 22 3f 3f 20 |.. prin|tf ("?? |
|00004100| 67 65 74 6f 70 74 20 72 | 65 74 75 72 6e 65 64 20 |getopt r|eturned |
|00004110| 63 68 61 72 61 63 74 65 | 72 20 63 6f 64 65 20 30 |characte|r code 0|
|00004120| 25 6f 20 3f 3f 5c 6e 22 | 2c 20 63 29 3b 0d 09 7d |%o ??\n"|, c);..}|
|00004130| 0d 20 20 20 20 7d 0d 0d | 20 20 69 66 20 28 6f 70 |. }..| if (op|
|00004140| 74 69 6e 64 20 3c 20 61 | 72 67 63 29 0d 20 20 20 |tind < a|rgc). |
|00004150| 20 7b 0d 20 20 20 20 20 | 20 70 72 69 6e 74 66 20 | {. | printf |
|00004160| 28 22 6e 6f 6e 2d 6f 70 | 74 69 6f 6e 20 41 52 47 |("non-op|tion ARG|
|00004170| 56 2d 65 6c 65 6d 65 6e | 74 73 3a 20 22 29 3b 0d |V-elemen|ts: ");.|
|00004180| 20 20 20 20 20 20 77 68 | 69 6c 65 20 28 6f 70 74 | wh|ile (opt|
|00004190| 69 6e 64 20 3c 20 61 72 | 67 63 29 0d 09 70 72 69 |ind < ar|gc)..pri|
|000041a0| 6e 74 66 20 28 22 25 73 | 20 22 2c 20 61 72 67 76 |ntf ("%s| ", argv|
|000041b0| 5b 6f 70 74 69 6e 64 2b | 2b 5d 29 3b 0d 20 20 20 |[optind+|+]);. |
|000041c0| 20 20 20 70 72 69 6e 74 | 66 20 28 22 5c 6e 22 29 | print|f ("\n")|
|000041d0| 3b 0d 20 20 20 20 7d 0d | 0d 20 20 65 78 69 74 20 |;. }.|. exit |
|000041e0| 28 30 29 3b 0d 7d 0d 0d | 23 65 6e 64 69 66 20 2f |(0);.}..|#endif /|
|000041f0| 2a 20 54 45 53 54 20 2a | 2f 0d 00 00 00 00 00 00 |* TEST *|/.......|
|00004200| 00 00 01 00 00 00 01 6e | 00 00 00 6e 00 00 00 3e |.......n|...n...>|
|00004210| 00 08 12 90 4e 5e 20 5f | 58 8f 4e d0 07 00 00 00 |....N^ _|X.N.....|
|00004220| 00 32 02 00 74 61 2c 20 | 30 78 30 30 2c 20 76 65 |.2..ta, |0x00, ve|
|00004230| 08 67 65 74 6f 70 74 2e | 63 00 02 00 00 00 00 00 |.getopt.|c.......|
|00004240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004270| 00 00 a6 ea ac fd 00 00 | 41 7a 00 00 01 ac 00 11 |........|Az......|
|00004280| 0e 50 41 47 45 46 41 55 | 4c 54 46 41 54 41 4c 00 |.PAGEFAU|LTFATAL.|
|00004290| 05 08 00 11 00 02 08 08 | 00 12 00 00 00 00 70 05 |........|......p.|
|000042a0| a0 8d 1f 40 00 04 4e 75 | 07 00 00 00 00 0a 04 00 |...@..Nu|........|
|000042b0| 00 2d 00 12 12 44 45 42 | 55 47 47 45 52 4c 4f 43 |.-...DEB|UGGERLOC|
|000042c0| 4b 4d 45 4d 4f 52 59 13 | 44 45 42 55 47 47 45 52 |KMEMORY.|DEBUGGER|
|000042d0| 52 41 4e 47 45 43 4f 4d | 4d 4f 4e 00 05 08 00 12 |RANGECOM|MON.....|
|000042e0| 00 02 08 08 00 0e 00 00 | 00 00 70 06 60 00 ff fc |........|..p.`...|
|000042f0| 07 00 00 00 00 06 0a 90 | 00 0a 00 13 00 12 00 04 |........|........|
|00004300| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00004310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004320| 00 00 00 00 00 00 00 06 | 00 03 00 50 00 20 01 dd |........|...P. ..|
|00004330| 02 3d 00 50 00 20 01 dd | 02 3d a6 04 e4 6d 00 00 |.=.P. ..|.=...m..|
|00004340| 07 29 00 00 07 29 00 00 | 04 df 01 00 00 00 00 1e |.)...)..|........|
|00004350| 00 50 00 20 01 dd 02 3d | 00 50 00 20 01 dd 02 3d |.P. ...=|.P. ...=|
|00004360| 00 00 04 df 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004370| 01 00 00 00 01 6e 00 00 | 00 6e 00 00 00 3e 00 54 |.....n..|.n...>.T|
|00004380| 46 a4 0a 4a 00 00 00 1c | 00 3e 00 00 4d 50 53 52 |F..J....|.>..MPSR|
|00004390| 00 01 00 0a 03 ed ff ff | 00 00 00 00 00 00 00 00 |........|........|
|000043a0| 03 f0 ff ff 00 00 00 4c | 00 5a 6e 18 00 00 00 00 |.......L|.Zn.....|
|000043b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+